Autor Beitrag
hui1991
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Di 06.06.06 10:07 
Wie kann ich testen ob eine Anwendung Minimiert, Maximiert oder geschlossen Wird.
Ich will die Anwendung nicht beim X (Schließen oben Rechts) nicht beenden sondern in den Tray ablegen. Wie kann ich das am besten machen. Muss ja nur wissen wann das ereigniss zum Schließen aufgerufen wird und das Beenden der Anwendung verhindern.

MfG
hui1991
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 06.06.06 10:12 
Also zum schließen :
Im OnCloseQuery ereignis CanClose auf False setzen (Programm kann nicht mehr beendet werden)
In OnClose halt mit den Jedis, oder was du halt hast, in den ray senden.
das andere geht glaubich über Windowstate also ob wsMinimized oder wsMaximized oder halt wsNormal

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Di 06.06.06 10:17 
WindowState hab ich schon ausprobiert.
Schon vor dem Thema schreiben.
CanClose finde ich aber nicht.
Ist bei mir irgendwie nicht vorhanden.
Wo kann ich es finden.
In Form1 ist es nicht dabei.

MfG
hui1991
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 06.06.06 10:23 
Im Auf das Formular klicken --> Im Objektinspektor den Reiter Ereignisse wählen --> Doppelklick auf das leere Feld rechts neben OnCloseQuery.

Welches Delphi benutzt du?

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 06.06.06 10:25 
Wenn die Form minimiert wird, kann man folgendermaßen eine eigene Prozedur ausführen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
// ins OnCreate der Form:
Application.OnMinimize := MeineMiniProzedur;

procedure TForm1.MeineMiniProzedur(Sender: TObject);
begin
  showmessage('Sososo, ich soll mich also klein machen...');
end;


CanClose ist ein Var-Parameter im OnCloseQuery der Form. Setzt man sie in der Prozedur auf False, kann die Form nicht geschlossen werden. Zumindest nicht über das X. Abschießen über den Taskmanager geht selbstverständlich ;-)

_________________
We are, we were and will not be.
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 06.06.06 10:27 
CanClose setzen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := false;
end;
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 06.06.06 10:32 
Man kann die Form auch noch mit Application.Terminate "beenden" wenn CanClose False ist :zwinker:

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: Di 06.06.06 10:42 
Blind :cry:
Hab OnCloseQuery gefunden hab dann in den Ereignissen gesucht.
Das ist ja aber in OnCloseQuery drin.
Habe Delphi 7 und hab des ja auch gefunden.
Naja Schließen tut es sich nicht und in den Tray will es auch nicht.
Ich teste dann mal rum.
Wenn was schief geht dann melde ich mich wieder.

MfG
hui1991
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Di 06.06.06 11:12 
Hier die Lösung:

ausblenden volle Höhe Delphi-Quelltext
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:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure WMSYSCOMMAND(var Msg: TMessage); Message WM_SYSCOMMAND;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
var
  k: Integer;
begin
    { wParam prüfen }
    case Msg.wParam of
      { fängt das Minimieren ab }
      SC_MINIMIZE:
        begin
          //...
          //inherited;
        end;
      { fängt das Schließen ab }
      SC_CLOSE:
        begin
          //...
          //inherited;
        end;
      //Weitere Parameter
    else
      { alle anderen Fälle weiterreichen an die standard Fensterprozedur }
      inherited;
    end;
end;


Wie funktioniert das? Zuerst fängst du die Message WM_SYSCOMMAND ab und leitest sie an deine eigene Prozedur weiter. Mit Msg.wParam fragst du den Parameter ab. Ist es z. B. SC_MINIMIZE, dann wurde versucht das Fenster zu minimieren. In dem Block kannst du das programmieren was das Programm in diesem Fall machen soll. Soll es nicht minimiert werden, dann darf inherited nicht ausgeführt werden. Soll das Programm zwar vor dem Minimieren was machen, aber dann doch minimiert werden, dann zum Schluß einfach inherited ausführen. Das gleiche gilt auch für die anderen Parameter.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
hui1991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 433

Windows XP, WIndows Vista
Turbo Delphi Explorer| Delphi, PHP,Blitzbasic
BeitragVerfasst: So 11.06.06 13:21 
So jetzt wo ich wieder zeit gefunden habe diesen Beitrag mir durchzulesen schreibe ich mal mein ergebniss.
Der Code von bms funktioniert bei mir wunderbar.

Also Danke an alle die mir versucht haben zu helfen :D

MfG
hui1991