Einzelnen Beitrag anzeigen

Roaster

Registriert seit: 21. Jul 2004
Ort: bei mir zu Hause
107 Beiträge
 
#1

Suche Idee, Button soll Options Fenster anzeigen/verbergen

  Alt 13. Jul 2009, 14:20
Hi,

ich versuche derzeit erfolglos mit einem Button auf meinem Haupfenster ein zweites (Options-)Fenster anzeigen zu lassen das später durch einen Klick auf den Button geschlossen werden soll oder wenn der User irgendwo ins Nirwana klickt.

Der zweite Teil war nicht weiter schwer:

Delphi-Quellcode:
procedure TfrmOptions.FormDeactivate(Sender: TObject);
begin
  Close;
end;
Das eigentliche Problem ergibt sich beim Drücken des Buttons:

Der Button ist eigengeschrieben und abgeleitet von TGraphicControl. Durch das Anklicken mit der Maus, wird der Button, oder besser das Icon darauf, entweder als aufgeklappt oder eingeklappt dargestellt. Das gleiche Verhalten, kann ich auch steuern, wenn ich das Property Expanded des Buttons auf True oder False setze. Dies ist, wie ich weiter unten noch erläutern werde, wichtig.

Wurde der Button gerade mit der Maus angeklickt und aufgeklappt, so wird das Ereignis OnExpanded gerufen, was letztendlich das Options-Fenster erzeugt und anzeigt. So weit so gut.

Wenn der User jetzt ausserhalb des zweiten Fensters klickt schließt sich dieses und ich setze durch ein Callback Ereignis Button.Expanded auf False. Warum das Ganze? Damit der Button wieder den Zustand Eingeklappt erhält!

Auch bisher ist soweit alles OK.

Wenn der User allerdings zum Schließen des Options-Fensters jetzt den Button bemüht, dann wird erstens durch den Callback Mechanismus Button.Expanded auf False gesetzt aber im Anschluß daran gleich wieder Button.OnExpanded (durch den Mausklick auf den Button) gerufen was sofort wieder das zweite Fenster anzeigt.

Ich suche also eine Möglichkeit, das Verhalten so zu steuern, dass sowohl durch einen Klick ausserhalb des Options-Fenster und durch einen Klick auf den Button das Options-Fenster geschlossen werden kann und gleichzeitig der Status des Buttons wieder auf Eingeklappt springt.

Zugegeben, sieht leicht auch, ist es aber nicht, zumindest sitze ich schon eine zeitlang an diesem Problem und komme einfach nicht weiter.
Kann hier jemand noch die ein oder andere Idee beisteuern?
cu, Michael

Windows 7, WinXP Pro, Vista, WinXP Home, Win98 SE
D4 C/S, D7 Enterprise, Turbo Delphi Pro, Delphi 2009
  Mit Zitat antworten Zitat