Mega Code Archive

 
Categories / Delphi / Examples
 

Neoturk forum - tray icon

15 Aralık 2005 19:56 Herkese Merhaba Benim bir sorunum var formu tray icon atıyorum,mouse ayarlarını yapıyorum fakat programım açılışta tray icon yerleşsin ve form görünmesin istiyorum baktığım örneklerde form1.visible:=False yazılmış ama bende işe yaramıyor yada ben beceremedim. Kısaca program açılışta direkt tray icon'a gidecek ve ana form gözükmeyecek nasıl yaparım. Şimdiden teşekkürler fatoş2 " **************************** Bugün 02:36 bence kod sıralamasında yanlış yapıyon ki form tray e indikten sonra form da görünmez hale geliyosa. yada direct formun properies inden visible ını false yapara dene. umarım yardımcı olabilmişimdir. kolay gelsin... umutumsu **************************** " dediğinizi denedim olmadı. kodumda böyle SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); BorderIcons := [biSystemMenu]; with IconNotifyData do begin hIcon := Application.Icon.Handle; uCallbackMessage := WM_USER + 1; cbSize := sizeof(IconNotifyData); Wnd := Handle; uID := 100; uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; sztip:='Program Tray Üzerinde'; end; StrPCopy(IconNotifyData.szTip, Application.Title); Shell_NotifyIcon(NIM_ADD, @IconNotifyData); Form1.Visible:=False; ama çalıştıramıyorum fatoş2 " cevap: merhaba, aşağıdaki şekilde bir uygulama yapınız - form üzerine popupmenu1 dizayn ediniz. - 4 tanem itemi olsun. formugizle,formugöster,merhaba,çıkış //...written by neoturk - 16.12.2005 var Form1: TForm1; stray:NOTIFYICONDATA; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); with stray do begin cbsize:=sizeof(stray); wnd:=form1.handle; hicon:=Application.icon.Handle; uID:=0; sztip:='deneme tray icon'; uflags:=7; uCallBackMessage:=$200; end; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var nokta:TPoint; begin getCursorPos(nokta); if (x=$205) then PopupMenu1.Popup(nokta.x,nokta.y);{popup1 i çalıştır} end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Shell_NotifyIcon(2,@stray);{tray ikonu gizle} end; procedure TForm1.FormHide(Sender: TObject); begin shell_notifyicon(0,@stray){tray ikonu göster} end; procedure TForm1.FormShow(Sender: TObject); begin Shell_NotifyIcon(2,@stray);{tray ikonu gizle} end; procedure TForm1.formugizle1Click(Sender: TObject); begin form1.Hide; end; procedure TForm1.formugster1Click(Sender: TObject); begin form1.Show; end; procedure TForm1.merhabafatode1Click(Sender: TObject); begin showmessage('merhaba fatoş'); end; procedure TForm1.programdank1Click(Sender: TObject); begin form1.Close; end; not: açılışta formun "oncreate" olayında "direkt olarak" visible özelliğini kullanarak formu gizleyemezsiniz. bunu farklı bir kod ile yapmanız gerekiyor. diğer bir yöntem ise bir timer yerleştirin, 1salise sonra formu gizlemesini söyleyin.timer1i kapatın. bu da başka bir çözüm yoludur. formun "oncreate" olayına aşağıdaki kodu kullanınız: //gerçek gizlemek için setwindowlong(application.handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); application.showmainform:=false; form1.Hide; //sahte gizlemek için form1.top:=-100; form1.left:=-100; form1.width:=0; form1.height:=0; sahte gizleme yaparsanız trayicon ile birlikte rahatlıkla kullanabilirsiniz. formun onshow olayına form1.top-left-width-height ayarlarını eski haline dönüştürmeniz gerekiyor. bunun içinde başlangıçtaki orjinal değerleri bir değişken serisinde saklayınız. gizlerken tekrar sahte gizleme yapabilirsiniz. gerçek gizleme yaparken trayiconu beraberinde "oncreate" olayında kullanamazsınız. program açıldıktan form gösterildikten sonra istekleriniz yerine getirilir. (formu gizle-göster özellikleri form gösterildikten sonra çalışır) tercihinize göre uygun kombinasyonları kodlayınız............ kolay gelsin... saygılarımla_ neoturk_