AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Suche Idee, Button soll Options Fenster anzeigen/verbergen
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Idee, Button soll Options Fenster anzeigen/verbergen

Ein Thema von Roaster · begonnen am 13. Jul 2009 · letzter Beitrag vom 13. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
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, 13: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
Stormy

Registriert seit: 8. Okt 2005
Ort: LPZ
73 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 13:32
Hi,

erstehe ich jetzt nicht so genau wo das Problem ist.
Setze doch im OnExpanded einfach eine Abfrage ob der Button.Expanded ist also

Delphi-Quellcode:
if Button.Expanded then
begin
  //dein Code zum Fenster öffnen
end;

Gruß
Stormy
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 13:39
Hallo,

verstehen tu ich das auch nicht ...

Das Options-Form wird doch über Frm_Options.ShowModal aufgerufen, oder ?

also

Delphi-Quellcode:
  Button_X.Expanded:= True;
  try
    Frm_Options.ShowModal
  finally
    Button_X.Expanded:= False;
  end;
Egal, wie das Form beendet wird, es wird der finally-Zweig angesprungen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Roaster

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

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 13:56
Zitat von hoika:
Hallo,
Delphi-Quellcode:
  Button_X.Expanded:= True;
  try
    Frm_Options.ShowModal
  finally
    Button_X.Expanded:= False;
  end;
Egal, wie das Form beendet wird, es wird der finally-Zweig angesprungen.
Das funktioniert so leider nicht, (war auch einer meiner Ansätze), wenn ich das Options-Fenster modal anzeige, dann komme ich nicht mehr auf den Button, der das Fenster erzeugt hat.

Zum weiteren Verständnis noch: das Options-Fenster ist rahmenlos und hat keinen Schließen-Button. D.h. dass ich diese nur wieder durch den besagten Button zuklappen kann oder dadurch, dass der User irgendwo ausserhalb des Options-Fensters klickt.

Man darf sich unter dem Options-Fenster jetzt nicht ein riesengroßes Fenster vorstellen, sondern so eine Art Popup-Fenster mit ein paar Optionen drin, siehe auch Anhang.
Miniaturansicht angehängter Grafiken
options_140.png  
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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:02
Warum mahcst du nicht, wie allgemein üblich, eine Schließenschaltfläche auf das Optionsfenster?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Roaster

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

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:04
Zitat von Stormy:
Hi,
Setze doch im OnExpanded einfach eine Abfrage ob der Button.Expanded ist also
Delphi-Quellcode:
if Button.Expanded then
begin
  //dein Code zum Fenster öffnen
end;
Leider so nicht möglich, da die Reihenfolge wie die Events im Button abgearbeitet werden trotzdem dazu führen, das letztendlich das Optionsfenster wieder geöffnet wird:

1) User klickt auf Button -> OnExpanded wird gerufen -> Fenster wird erzeugt und angezeigt -> OFFEN
2) User klickt auf Button -> Callback wird gerufen -> .Expanded wird auf False gesetzt -> GESCHLOSSEN, aber
3) Button.Click wird intern gerufen (.Expanded wider von False auf True gesetzt)
4) Button.OnExpanded wird wieder gerufen -> Fenster wird erzeugt und angezeigt -> OFFEN

Eigentlich sollte 3) bis 4) nicht mehr passieren oder eben durch eine Logik unterbunden werden - genau hierzu suche ich eine Lösung.
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
Roaster

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

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:09
Zitat von Luckie:
Warum mahcst du nicht, wie allgemein üblich, eine Schließenschaltfläche auf das Optionsfenster?
Ja, daran dachte ich natürlich auch schon, nur würde dies
erstens nach sich ziehen, dass das Ganze etwas unschön aussieht und als "Fenster" zu erkennen ist, und sich nicht wie im Screenshot von oben als klappbares "Panel" darstellt und
zweitens könnte der User dann das Fenster ggf. verschieben oder evtl. das Parentfenster (mit dem Button darauf) verschieben und das Optionsfenster würde sich nicht mitbewegen.
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
Stormy

Registriert seit: 8. Okt 2005
Ort: LPZ
73 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:10
Und wenn du nach 2 bzw. vor 3 ein exit; setzt?


Gruß
Stormy
  Mit Zitat antworten Zitat
Roaster

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

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:17
Zitat von Stormy:
Und wenn du nach 2 bzw. vor 3 ein exit; setzt?
Stormy,
Leider auch nicht so einfach möglich. Der besagte Button, funktioniert ja so tadellos, ich verwende diesen bspw. auch dazu ein Panel ein- oder auszuklappen oder Details zu Fehlermeldung ein- bzw. auszublenden.

Das mit dem Panel hatte ich auch bisher statt dem Optionsfenster verwendet, gefiel mir dann aber nicht mehr so und aufgrund neu hinzugekommener Optionen wurde das Panel dann auch zu klein und zu unübersichtlich.

Die Grundfunktion des Buttons ist einwandfrei, der Knackpunkt ist, dass das Optionsfenster ein eigenständiges Fenster ist und zum anderen auch geschlossen werden kann (und soll), wenn der User neben das Fenster klickt.

Modal angezeigt nutzt das Optionsfenster nicht viel, da dann ja die Ein-Ausklappfunktion überflüssig wäre.
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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg

  Alt 13. Jul 2009, 14:27
Hallo,

dann packe dein Options-"Form" auf ein Panel unterhalb des Expanded-Buttons,
das Panel ist am Anfang unsichtbar.
Per Button-Klick wird es sichtbar.
Zur Not geht auch ein Frame, der eingeblendet wird.

Wie dann das "woanders hinklicken soll es schliessen" funktioniert,
weiss ich auch nicht.
Ich finde diese Anforderung eh doof
Ich klicke aus Versehen daneben und das "Form" ist weg, ne!.

Mal was anderes. Was benutzt als Komponente für den "Objekt-Inspektor" ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz