Pois é, Anderson... eu até usava este código para TrayIcon, mas depois que vi o componente da JEDI, sinceramente deixei o "hardcoded" de lado. E o resultado final ficou tão bom ou melhor quanto com o código que eu tinha (idêntico ao seu)
Sds, Ricardo. desenvolvimento <[EMAIL PROTECTED]> escreveu: desculpe entrar na conversa... sobre o componente trayicon, vc pode usar esse: ////////////////////////// inicio do trayicon unit TrayIcon; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, ShellAPI, Forms, menus; const WM_TOOLTRAYICON = WM_USER+1; WM_RESETTOOLTIP = WM_USER+2; type TTrayIcon = class(TComponent) private { Field Variables } IconData: TNOTIFYICONDATA; fIcon : TIcon; fToolTip : String; fWindowHandle : HWND; fActive : boolean; fShowDesigning : Boolean; { Events } fOnClick : TNotifyEvent; fOnDblClick : TNotifyEvent; fOnRightClick : TMouseEvent; fPopupMenu : TPopupMenu; function AddIcon : boolean; function ModifyIcon : boolean; function DeleteIcon : boolean; procedure SetActive(Value : boolean); procedure SetShowDesigning(Value : boolean); procedure SetIcon(Value : TIcon); procedure SetToolTip(Value : String); procedure WndProc(var msg : TMessage); procedure FillDataStructure; procedure DoRightClick( Sender : TObject ); protected public constructor create(aOwner : TComponent); override; destructor destroy; override; published property Active : boolean read fActive write SetActive; property ShowDesigning : boolean read fShowDesigning write SetShowDesigning; property Icon : TIcon read fIcon write SetIcon; property ToolTip : string read fTooltip write SetToolTip; property OnClick : TNotifyEvent read FOnClick write FOnClick; property OnDblClick : TNotifyEvent read FOnDblClick write FOnDblClick; property OnRightClick : TMouseEvent read FOnRightClick write FonRightClick; property PopupMenu : TPopupMenu read fPopupMenu write fPopupMenu; end; procedure Register; implementation {$R TrayIcon.res} procedure TTrayIcon.SetActive(Value : boolean); begin if value <> fActive then begin fActive := Value; if not (csdesigning in ComponentState) then begin if Value then begin ShowWindow(Application.Handle, SW_HIDE); AddIcon; end else begin ShowWindow(Application.Handle, SW_SHOW); DeleteIcon; end; end; end; end; procedure TTrayIcon.SetShowDesigning(Value : boolean); begin if csdesigning in ComponentState then begin if value <> fShowDesigning then begin fShowDesigning := Value; if Value then begin AddIcon; end else begin DeleteIcon; end; end; end; end; procedure TTrayIcon.SetIcon(Value : Ticon); begin if Value <> fIcon then begin fIcon.Assign(value); ModifyIcon; end; end; procedure TTrayIcon.SetToolTip(Value : string); begin if length( Value ) > 62 then Value := copy(Value,1,62); fToolTip := value; ModifyIcon; end; constructor TTrayIcon.create(aOwner : Tcomponent); begin inherited create(aOwner); FWindowHandle := AllocateHWnd( WndProc ); FIcon := TIcon.Create; end; destructor TTrayIcon.destroy; begin if (not (csDesigning in ComponentState) and fActive) or ((csDesigning in ComponentState) and fShowDesigning) then DeleteIcon; FIcon.Free; DeAllocateHWnd( FWindowHandle ); inherited destroy; end; procedure TTrayIcon.FillDataStructure; begin with IconData do begin cbSize := sizeof(TNOTIFYICONDATA); wnd := FWindowHandle; uID := 0; // is not passed in with message so make it 0 uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; hIcon := fIcon.Handle; StrPCopy(szTip,fToolTip); uCallbackMessage := WM_TOOLTRAYICON; end; end; function TTrayIcon.AddIcon : boolean; begin FillDataStructure; result := Shell_NotifyIcon(NIM_ADD,@IconData); // For some reason, if there is no tool tip set up, then the icon // doesn't display. This fixes that. if fToolTip = '' then PostMessage( fWindowHandle, WM_RESETTOOLTIP,0,0 ); end; function TTrayIcon.ModifyIcon : boolean; begin FillDataStructure; if fActive then result := Shell_NotifyIcon(NIM_MODIFY,@IconData) else result := True; end; procedure TTrayIcon.DoRightClick( Sender : TObject ); var MouseCo: Tpoint; begin GetCursorPos(MouseCo); if assigned( fPopupMenu ) then begin SetForegroundWindow( Application.Handle ); Application.ProcessMessages; fPopupmenu.Popup( Mouseco.X, Mouseco.Y ); end; if assigned( FOnRightClick ) then begin FOnRightClick(self,mbRight,[],MouseCo.x,MouseCo.y); end; end; function TTrayIcon.DeleteIcon : boolean; begin result := Shell_NotifyIcon(NIM_DELETE,@IconData); end; procedure TTrayIcon.WndProc(var msg : TMessage); begin with msg do if (msg = WM_RESETTOOLTIP) then SetToolTip( fToolTip ) else if (msg = WM_TOOLTRAYICON) then begin case lParam of WM_LBUTTONDBLCLK : if assigned (FOnDblClick) then FOnDblClick(self); WM_LBUTTONUP : if assigned(FOnClick)then FOnClick(self); WM_RBUTTONUP : DoRightClick(self); end; end else // Handle all messages with the default handler Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam); end; procedure Register; begin RegisterComponents('ANDERSON', [TTrayIcon]); end; end. ////////////////////////////////////////////////////// fim do trayicon Sobre o outro componente até tem jeito, mas dá mais trabalho.... acho q compensa vc instalar a biblioteca jedi... tem muita coisa boa lá. Anderson ----- Original Message ----- From: Leandro To: delphi-br@yahoogrupos.com.br Sent: Monday, June 18, 2007 3:47 PM Subject: Re: [delphi-br] Criar botão na barra de título Blz Ricardo, Desculpe a demora na resposta... vc sabe se tem como eu instalar só esses dois componentes ao invés da suite Jedi toda? Obrigado, Leandro ----- Original Message ----- From: Ricardo César Cardoso To: delphi-br@yahoogrupos.com.br Sent: Friday, June 15, 2007 10:17 AM Subject: Re: [delphi-br] Criar botão na barra de título Bom dia Leandro! Acho que o melhor que vc tem a fazer é baixar a JediVCL e usar o componente TJvCaptionButton (paleta TJvButtons) que faz exatamente o que vc precisa.. Na edição 81 da revista Clube Delphi saiu uma matéria explicando o funciona este e outros componentes. Montei um exemplo de como usar o TJvCaptionButton e TJvTrayIcon e estou colocando no meu site. http://www.esnips.com/doc/495f7cf6-823f-4f1e-91cf-fdb5d90b5aff/JvDesktopAlert_JvTrayIcon_JvCaptionButton_Demo Sds, Ricardo. Leandro <[EMAIL PROTECTED]> escreveu: Cara. esse exemplo funcionou só no XP... preciso que funcione no 98/2000/2003 etc também... saberia de mais algum exemplo? Obrigado, Leandro ----- Original Message ----- From: Thiago Filiano (America Soft) To: delphi-br@yahoogrupos.com.br Sent: Thursday, June 14, 2007 8:54 AM Subject: Re: [delphi-br] Criar botão na barra de título tem sim, da uma olhada nesse link! http://www.esnips.com/doc/13240d68-c0bd-4714-b9be-0c82782e0b10/Caption-Buttons []'s Thiago Filiano msn: [EMAIL PROTECTED] 11-8288-4402 Leandro escreveu: > Boa tarde, > > > Alguém tem um exemplo de como criar um botão na barra de título de uma janela? Seria um > botão com uma "?" que ao ser clicado mostraria uma ajuda sobre algum item da janela, parecido > com o que acontece em algumas janelas de configuração do Windows. > > []',s > > Leandro > > > [As partes desta mensagem que não continham texto foram removidas] > > > > [As partes desta mensagem que não continham texto foram removidas] _ --------------------------------- Novo Yahoo! Cadê? - Experimente uma nova busca. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] --------------------------------- Novo Yahoo! Cadê? - Experimente uma nova busca. [As partes desta mensagem que não continham texto foram removidas]