Entwickler-Ecke

Windows API - Application.OnMinimize - wie funktionierts?


mehmeh - Do 22.09.05 15:05
Titel: Application.OnMinimize - wie funktionierts?
Hallo,
ich möchte das mein Programm beim Start in die TNA verschwindet und dann mit einer Procedure beginnt. Da ich das mit der CoolTray Komponente nicht hinbekomme, habe ich mich auf die Suche gemacht und das gefunden.

Aplication.OnMinimize

also habe ich das in meine procedure OnCreate eingebaut und einiges probiert.

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
   Application.OnMinimize;
end;

hier kommt folgende Fehlermeldung
Zitat:
[Fehler] Main.pas(723): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

so dann hab ich das probiert:


Delphi-Quelltext
1:
Application.OnMinimize := autokonvert;                    


hier bekomm ich diese Fehlermeldung
Zitat:
[Fehler] Main.pas(723): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

nun hab ich das probiert


Delphi-Quelltext
1:
Application.OnMinimize := autokonvert(Sender,BD,betr);                    


und so wie der Zufall es will
Zitat:

[Fehler] Main.pas(723): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'

Jetzt bin ich ratlos. Wie verwende ich das denn nun? Oder hat jemand einen andern guten Vorschlag


ulrix - Do 22.09.05 15:28

Tja, du hast das ein bisschen falsch verstanden.

OnMinimize ist ein Event keine Methode!!!

Das heist OnMinimize wird von dem Objekt intern aufgerufen, wenn die Applikation minimiert wurde!!!

Wenn du selbst deine App minimieren willst musst du

Quelltext
1:
Application.Minimize;                    

aufrufen!!

Wenn du auf das Minimize Event reagieren willst verwende am besten die TApplicationEvents Komponente (unter "Zusaetzlich" zu finden).

mfg ulriX


flieger-michl - Do 22.09.05 15:28

Hallo,

ich bin mir nicht sicher, ob ich verstanden hab, was Du erreichen willst.

Application.OnMinimize ist ein Event, der eintritt, wenn der Anwender das Hauptformular der Anwendung minimiert.

Wenn Du erreichen willst, daß Dein Programm in der Taskleiste nicht mehr zu sehen ist,

dann verwende ShowWindow(Application.Handle, SW_HIDE);

Wenn Du was anderes erreichen wolltest, klär mich auf.

Grüße
Michl


mehmeh - Do 22.09.05 15:54

So jetzt mal das Beispiel aus der Hilfe

Zitat:
Zu diesem Beispiel gehört ein Timer in einem Formular. Wenn die Anwendung läuft und auf Symbolgröße verkleinert wird, startet der Timer, und die Anwendung erhält wieder ihre normale Fenstergröße, sobald das Ereignis OnTimer eintritt. Der Timer wird dann deaktiviert, bis das Formular das nächste Mal wieder minimiert wird.
Deklarieren Sie die Methode AppStartTimer als public-Methode von TForm1.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.FormCreate(Sender: TObject);

begin
  Application.OnMinimize := AppStartTimer;

end;

procedure TForm1.AppStartTimer(Sender: TObject);

begin
  Timer1.Enabled := True;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
  Application.Restore;
  Timer1.Enabled := False;
end;


Ich dachte das ich das für meinen Fall, etwas verändert einsetzten kann. Im Beispiel wurde Application.Minimize ja auch so aufgerufen, wie ich es probiert habe.
Und dabei will ich nur das mein Programm automatisch weiter arbeitet, wenn es minimiert wird.
Das Program aus der Taskleiste zubekommen und in das TNA zu schieben, das hab ich mit der CoolTray Komponente hinbekommen, aber ich weiß nicht wie ich das Programm weiterlaufen lasse, wenn es minimierrt ist, schließlich will ich nicht immer aufpassen.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.