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_