Erstmal danke für die Geduld!
Ein Popupfenster stelle ich mir nicht modal vor, das muss mit Show angezeigt sein. Ansonsten funktioniert das mit dem Danebenklicken natürlich nicht.
Wir bei mir auch "nur" mittels show angezeigt. Das Danebenklicken frage ich schon umständlich ab. Also hätte ich an
OnExit();
schon sehr Interesse! Denn dann hätte ich ein Event und gut wäre es.
Habe ich die Eigenschaft gerade verwechselt? Hieß die OnLeave? Müsste ich nachschauen. Die muss jedenfalls im Objektinspektor sein wie das Gegenstück OnEnter.
Nein, Du hast es richtig. Es gibt ein OnExit für die Ableitungen von TControl. Allerdings bekomme ich das nicht zum Funktionieren:
Delphi-Quellcode:
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
ScrollBox1: TScrollBox;
ComboBox1: TComboBox;
procedure SpeedButton1Click(Sender: TObject);
procedure ScrollBox1Exit(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ScrollBox1Exit(Sender: TObject);
begin
ScrollBox1.Visible:= False; // Wird nicht ausgelöst :-(
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ScrollBox1.Visible:= Not ScrollBox1.Visible;
end;
Aber ganz verstehe ich das noch nicht... die Controls auf dem Popup soll man gar nicht nutzen können? Wenn man drauf klickt soll das Popupfenster verschwinden? Oder soll man diese per Tastatur anspringen und nutzen können?
Habe mich vermutlich auch bloß blöd ausgedrückt:
Auch Popup-Menüs kann man dazu "missbrauchen", um neben den MenuItems auch Infos anzuzeigen; etwa in Enabled:= False Items. Ich mache den Aufwand auch bloß, weil ich es nicht schaffe, die Popup-Menüs vom Aussehen her dem neuen Klicki-Bunti-Groß-Aussehen der Windows-10-Apps anzugleichen
und TComboBoxes einzufügen.
Ich habe mal 2 Bilder dazu angehängt. Es soll aussehen, wie das große Bild. Das kleine Bild zeigt den oben wiedergegebenen Code an. Weder ein Klick auf das Formular, noch den SpeedButton, noch den Windows-Desktop lösen OnExit aus...