Nachdem mir die vorgefertigten Delphi Messagedlg Routine zu unflexibel ist und ich aber nicht für jede kleine Zwischenfrage eine neue Form machen will, habe ich begonnen, mir eine flexiblere Dialog-
Unit zu erstellen. Das Fenster soll zunächst einen grossen Label für die Textausgabe, ein Panel mit 5 Buttons (die man wahlweise vor dem Aufruf sichtbar oder unsichtbar machen kann) enthalten, geplant ist ein zusätzliches Frame, in das man zur Laufzeit weitere Eingabekomponenten, z.B. ein Edit-Feld oder eine Dropdownbox hängen kann.
Ich würde dem Fenster gerne den Style WS_POPUP or WS_THICKFRAME geben, weil mir für so ein Fragefenster eine Titelleiste überflüssig und eher störend erscheint.
Aber sobald ich in der Routine TdlgFrage.CreateParams die Zeile
Params.Style := WS_POPUP OR WS_THICKFRAME
einfüge, passsiert etwas ganz eigenartiges: Der erste Button wird bei der Anzeige der Form nicht gezeichnet. Er kann aber angeklickt werden, und wird sichtbar, sobald man ihn anklickt. Ohne diese Zeile sind alle Buttons normal sichtbar.
Zum Ausprobieren einfach die
Unit einbinden, Aufruf mit
result:=Ask (Fragetext, Button1text, button2text ...)