| Autor |
Beitrag |
Cruiser23
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Fr 27.06.03 12:57
Wenn ich mein Prog minimire, soll es in den Systray, was auch kein problem darstellt. Allerdings soll es dafür nicht in der Taskbar angezeigt werden. Zwei Animationen sehen einfach mies aus (zum Tray und zur Taskbar)! Habe dafür im EDH2000 folgenden source gefunden:
Delphi-Quelltext 1: 2: 3: 4: 5:
| ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); |
Der tuts nur unter XP nicht ganz, das heißt: In der Taskbar is jetzt keine Schaltfläche mehr, sondern das Fenster minimirt sich (wie wenn man das Editorfenster von Delphi schließt) links, genau über die Taskbar).
Gibts nicht sowas wie---? Apllication.ShowMainFor = False...nur auch zu einem späteren Zeitpunkt als OnCreate möglich?
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
Cruiser23 
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Fr 27.06.03 14:27
Dazu komm nun noch folgends Problem :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| procedure TForm1.MinForm; var h:HWnd;
begin if MinTrue = false then begin TaskBarAddIcon; h:=handle; postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0); MinTrue:= true; end else Showmessage('Ist minimiert'); Exit; end;
procedure TForm1.TaskBarAddIcon; var tnid: TNotifyIconData ;
begin with tnid do begin cbSize := sizeof(TNotifyIconData); Wnd := Form1.handle; uID := 1; uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; uCallbackMessage := WM_TASKBAREVENT; hIcon := application.icon.handle; strcopy(tnid.szTip,'Tooltipp'); Shell_NotifyIcon(NIM_ADD, @tnid); with Screen do DrawAnimatedRects(Handle, 3, BoundsRect, Rect(Width-20, Height, Width-10, Height));
end; end;
procedure TForm1.WMTASKBAREVENT(var message: TMessage); var MP: TPoint;
begin case message.LParamLo of WM_RBUTTONDOWN : begin GetCursorPos(MP); SystrayPopup.Popup(MP.x,MP.y); end; WM_LBUTTONDBLCLK : begin Anzeigen1Click(nil); end; end; end;
procedure TForm1.MinForm; var h:HWnd;
begin if MinTrue = false then begin TaskBarAddIcon; h:=handle; postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0); MinTrue:= true; end else Showmessage('Ist minimiert'); Exit; end; |
Wenn mein prog einmal minimiret ist, läss es sich (nach dem Restore) kein zweites mal minimiren! Was habe ich falsch gemacht?
Weiß den niemand einen Rat
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
Cruiser23 
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Di 01.07.03 21:19
Nochmal Hallo
Ich will ja niemanden auf den Wecker gehen, nur stehe ich mit meinem prog leider ein wenig unter Zeitdruck (ich hab noch knapp 2 Monate) und ich muss an dem Ding noch soviel machen, das ein wenig Hilfe in Form von nem Tipp oder so echt gut gebrauchen könnte! Nich bös nehmen! 
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 02.07.03 07:36
Ich kann dir leider nicht direkt helfen. Ich kann dir aber die Komponente CoolTrayIcon empfehlen. Mit hilfe dieser Komponente sollte das ohne Probleme klappen.
Gruß
Tino
|
|
Cruiser23 
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Mi 02.07.03 10:51
Danke
Habe es ir gerade gezogen! Funtz auch, jetzt muss ich`s "nur noch" verstehen, aber da bin ich zuversichtlich!
Gab ÜB n kleines Problem mit dem Download:
Wenn ich den von dir Angegebenen Link anklicke, kann ich zwar Downloaden, aber die Datei kann man dan nicht öffnen!
Wenn man allerdings auf die Haupseite von denen geht und dann zieht, is alles OK! Liegts an mir oder an dem Link? Egal, habs ja jetzt!
Danke nochmal!
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
Cruiser23 
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Mi 02.07.03 12:03
Habe gefunden, wonach ich gesucht habe:
Delphi-Quelltext 1: 2:
| if IsWindowVisible(Application.Handle) then ShowWindow(Application.Handle, SW_HIDE); |
Dazu habe ich eigentlich keine Frage, nur ist mir etwas aufgefallen:
Wenn ich das ganze zu OnCreate stecke, tut sich nichts (wird compilert aber is halt noch in der Taskbar). Bei OnShow dagegen futzt`s! Gibt es in Delphi eigentlich Befehle, die in OnCreate einfach nicht ausgeführt werden, oder hätt ich noch etwas dazuschreiben müssen?
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 02.07.03 13:26
| Cruiser23 hat folgendes geschrieben: | | Gibt es in Delphi eigentlich Befehle, die in OnCreate einfach nicht ausgeführt werden, |
Nein!
Das Problem ist wahrscheinlich das wenn das OnCreate Event ausgelöst wird das Mainform noch nicht sichtbar ist und somit deine Bedingung
Delphi-Quelltext 1:
| if IsWindowVisible(Application.Handle) then |
False ergibt. Im OnShow Event dagegen ist das Form bereits sichbar und die Bedingung ergibt True.
Gruß
Tino
|
|
Cruiser23 
      
Beiträge: 191
WinXP
D7 Prof.
|
Verfasst: Mi 02.07.03 21:40
Klingt logisch! Danke nochmal für die schnelle Hilfe!
...und die Cooltray-Kompo is echt cool  !
_________________ Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
|
|
|