Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Titelleiste der Form abfragen ? (https://www.delphipraxis.net/78877-titelleiste-der-form-abfragen.html)

-=cats=- 12. Okt 2006 14:03


Titelleiste der Form abfragen ?
 
Hi :hi:

Gibt es eine auch für einen Anfänger gut
verständliche Möglichkeit, herauszufinden
welches Symbol in der Titelleiste der
Form angeklickt wurde ?

Z.B. ob der Benutzer auf "Maximieren" geklickt
hat ?
Ich möchte eine bestimmte Aktion ausführen,
wenn auf eines dieser Symbole geklickt wurde.

Vielen Dank schon mal für die Hilfe :)

-=cats=- :coder:

TurboMartin 12. Okt 2006 14:16

Re: Titelleiste der Form abfragen ?
 
Du nutzt ganz einfach ein ApplicationEvents aus Additional / Zusätzlich.
Dann wird dabei ein Event ausgelöst.

-=cats=- 12. Okt 2006 14:22

Re: Titelleiste der Form abfragen ?
 
Hmm ... :gruebel: so ganz
versteh ich das nicht.
Sorry, hab noch nicht viel Ahnung von Delphi ... :?
Also, wie kann ich diesem ActionEvent sagen, das
es was tun soll wenn auf maximieren geklickt wurde ?
Ich verstehe nicht ganz, wie ich an dieses "maximieren"
rankommen soll. Wie ich darauf zugreife.
Woher weiß das Action Event, das darauf geklickt wurde ?
Oder bekommt das generell alles mit ?

:coder2:

Luckie 12. Okt 2006 14:33

Re: Titelleiste der Form abfragen ?
 
Du setzt die Komponente ApplicationEvents auf dein Formular und dann schreibst du deinen Code in das entsprechende Ereignis:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  ShowMessage('Minimieren');
end;
(Doppelklick im Objectinspector in das entsprechende Ereignis, dann wir dir der Methodenrumpf automatisch erstellt.)

TurboMartin 12. Okt 2006 14:37

Re: Titelleiste der Form abfragen ?
 
Zitat:

Zitat von -=cats=-
Hmm ... :gruebel: so ganz
versteh ich das nicht.
Sorry, hab noch nicht viel Ahnung von Delphi ... :?
Also, wie kann ich diesem ActionEvent sagen, das
es was tun soll wenn auf maximieren geklickt wurde ?

Schritt für Schritt:
1. Du öffnest auf der Komponentenleiste den Registerkartenreiter Additional (englische Versionen) oder Zusätzlich (deutsche Version).
2. Nun suchst du das Icon von ApplicationEvents und ziehst es auf die Form.
3. Nun gehst du im Object Inspector auf den Registerkartenreiter Events.
4. Nun wählst du dort ein Event aus und doppelklickst datauf.
5. Nun gibst du im Editor, der sich öffnet den Code ein, denn er bei diesem Event ausführen soll.


Zitat:

Zitat von -=cats=-
Ich verstehe nicht ganz, wie ich an dieses "maximieren"
rankommen soll. Wie ich darauf zugreife.
Woher weiß das Action Event, das darauf geklickt wurde ?
Oder bekommt das generell alles mit ?
:coder2:

Die Komponente findet alles alleine heraus. Beim klicken auf solch ein Button versendet Windows eine Message an das Fenster. Diese fängt die Komponente ab.

PS: Vergess Delphi nicht zu starten :mrgreen:

-=cats=- 12. Okt 2006 14:45

Re: Titelleiste der Form abfragen ?
 
Zitat:

Zitat von TurboMartin
PS: Vergess Delphi nicht zu starten :mrgreen:

:tongue: :lol:

Erst mal vielen Dank für die ausführliche Erklärung :)

Ich denke, jetzt hab ich es begriffen :)

Eine Frage hab ich allerdings noch:
Bei den Ereignissen dieses ActionEvents, da gibt es
ein onMinimize.
Was mach ich wenn ich maximieren möchte ?
Das mit dem Minimieren hat hingehaun. Das er dann z.B.
nen Text anzeigt oder sowas.

TurboMartin 12. Okt 2006 14:53

Re: Titelleiste der Form abfragen ?
 
Zitat:

Zitat von "-=cats
Bei den Ereignissen dieses ActionEvents, da gibt es
ein onMinimize.
Was mach ich wenn ich maximieren möchte ?
Das mit dem Minimieren hat hingehaun. Das er dann z.B.
nen Text anzeigt oder sowas.

Ich versteh es mal als was ist dort OnMaximize: OnRestore! :mrgreen:

-=cats=- 12. Okt 2006 14:55

Re: Titelleiste der Form abfragen ?
 
Naja ... also dieses OnRestore hab ich
natürlich auch mal ausprobiert ;)

Aber das macht ja nur was, wenn das Prog
minimiert war (in die Taskleiste) und Du
dann wieder draufklickts, damit es wieder
maxmiert wird.
Was ich meine ist aber das "Maximieren"-Symbol
in der Titelleiste ...
Oder hab ich das jetzt falsch verstanden ?

TurboMartin 12. Okt 2006 15:00

Re: Titelleiste der Form abfragen ?
 
Probier mal:
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
  if WindowState = wsMaximized then
  begin
    //hier der Code
  end;
end;

-=cats=- 12. Okt 2006 15:05

Re: Titelleiste der Form abfragen ?
 
Vielen Dank :)

Die Idee ist nicht schlecht.
Allerdings klappt es jetzt nur, wenn ich
erst auf "Ursprungsgröße" (also die
beiden sich überlappenden Fenster) gehe,
anschließend auf maximieren und dann wieder
auf "Ursprungsgröße".
Sehr sehr verzwickt ...
Mein Programm wird übrigens im Vollbild
ohne Titelleiste gestartet.
Vielleicht liegt es ja daran ... :gruebel:


Ok, ich habe es jetzt hinbekommen so
wie ich es haben möchte.
Jetzt hab ich nur noch ein Problem (hoffentlich nur dieses
eine ... ;)): Wie blende ich die Titelleiste wieder ein?

So blende ich sie aus:

Delphi-Quellcode:
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) AND NOT WS_CAPTION);
Das habe ich in einem Buch gefunden. Aber wie blende ich sie dann wieder ein ?

-=cats=- 13. Okt 2006 09:29

Re: Titelleiste der Form abfragen ?
 
Wenn ich an Stelle des "AND" ein "OR" einfüge,
funktioniert es leider auch nicht.
Hat nicht jemand eine Idee ?

Ok, hat sich erledigt ;)
Einfach WindowState := wsNormal;

Muetze1 13. Okt 2006 10:42

Re: Titelleiste der Form abfragen ?
 
Zitat:

Zitat von -=cats=-
Wenn ich an Stelle des "AND" ein "OR" einfüge,
funktioniert es leider auch nicht.

Nö, weil das NOT noch mit weg muss. Also Or ohne Not wäre ok...

-=cats=- 13. Okt 2006 11:01

Re: Titelleiste der Form abfragen ?
 
Ja das ist klar.
Wenn ich das "NOT" drin lasse, dann schmiert
alles ab ;)
Aber mit "OR" allein funktioniert es bei mir auch nicht ;)
Warum weiß ich allerdings nicht. Eigentlich müsste es
ja gehen ... :gruebel:

TurboMartin 13. Okt 2006 11:09

Re: Titelleiste der Form abfragen ?
 
Also bei deinem Code wird bei mir die Titelleiste transparent (Win98) :gruebel: :mrgreen: :mrgreen:

-=cats=- 13. Okt 2006 11:11

Re: Titelleiste der Form abfragen ?
 
Wie transparent ? :gruebel:
Also, bei mir ist sie komplett verschwunden (Win XP).
Ich hab nur noch die kleinen schwarzen Pfeile am Rand,
damit ich die Form vergrößern und verkleinern kann.

TurboMartin 13. Okt 2006 11:52

Re: Titelleiste der Form abfragen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So sieht das bei mir aus (s. Anhang) :gruebel: :mrgreen:

-=cats=- 13. Okt 2006 13:21

Re: Titelleiste der Form abfragen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sehr merkwürdig ... :shock:

So bei mir:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz