![]() |
WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Liste der Anhänge anzeigen (Anzahl: 1)
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
Delphi-Quellcode:
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.
Params.Style := WS_POPUP OR WS_THICKFRAME
Zum Ausprobieren einfach die Unit einbinden, Aufruf mit
Delphi-Quellcode:
result:=Ask (Fragetext, Button1text, button2text ...)
|
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Wieso nicht TTaskDialog verwenden? Damit ist man flexibel genug um viele einfache Dialogklassen zu vermeiden und man hat auch keine Buttons mit ganzen Fragen als Buttontext.
|
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Ich habe keine "Buttons mit ganzen Fragen" als Buttontext, sondern die möglichen Antworten auf die im Label angezeigte Frage. z.B:
Delphi-Quellcode:
Die Einschränkung der Buttontexte auf die paar vorgefertigten möglichen Antworten (Ok, Ja, Nein etc.) ist ein Hauptgrund für meine Eigenbau Dialog-Unit. Das Anzeigen anderer Buttons im TTaskdiaog ist zwar möglich, aber doch recht umständlich.
case Ask('Eine PDF Datei mit diesem Namen existiert schon.'#13+#10
+'Wollen sie die PDF Datei überschreiben'#13#10 +'oder eine neue Seite an die Datei anhängen?', 'Überschreiben', 'Anhängen', 'Anderer Name', 'Abbrechen') of 1: doÜberschreiben; 2: doAnhängen; 3: DoAndererName; 4: exit; end; Abgesehen davon, dass ich noch auf einige Windows-XP-Anwender Rücksicht nehmen muss und in dem konkreten Projekt die Verwendung dieses Windows-Dialogs, den es erst ab Vista gibt, dadurch ohnehin nicht möglich ist. Und der Standard-TTaskDialog ist übrigens auch mit der unnötigen Überschrift ausgestattet, die ich in meinem Dialog gerne weg hätte. |
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Ich nehme für solche Zwecke
![]() Damit kann man solche etwas komplexeren Fragedialoge auch mit einem Funktionsaufruf erzeugen. Man kann auch noch kurze Erläuterungstexte zu den einzelnen Antworten angeben, damit der Anwender genau weiß, was er da tut. (s. Solways Hompege, unteres Beispiel). |
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Mir geht es in diesem Thread um diesen Fensterstyle ohne Überschrift, der nicht richtig funktioniert. Dass es prinzipiell andere Möglichkeiten gibt, Dialoge u erzeugen, ist schon klar.
|
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Zitat:
Zitat:
![]() Edit: Zitat:
|
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anbei ein Screenshot (der LMD-Implementierung - mit noch Designfehlern der der D6-Version) wie es hier aussieht Zitat:
Zeige einfache einen "unbedarften" User deinen Dialog und diesen Taskdialog. Zu 95% wird er den Taskdialog verständlicher finden. Unter den Haupttexten kann man auch noch längere Beschreibungen unterbringen. |
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Hallo,
also ich generiere alle Formulare erst dynamisch zur Laufzeit des Programms. Den graphischen Editor von Delphi benutze ich nur noch zum Testen, ansonsten programmiere ich Oberflächen wie auch in Java üblich nur aus dem Quellcode heraus. Damit kann man sich natürlich beliebige Abfragedialoge sehr schnell flexibel erzeugen, ohne jedesmal ein neues Formular mit dem Editor erstellen zu müssen mfg frank P.S.: Mir ist klar, dass dir dies nicht wirklich weiter hilft :P |
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Ach ja - zu deiner Frage: :mrgreen:
Du kickst mit deinem CreateParams die Vorbelegungen raus. Das muss so ausschauen:
Delphi-Quellcode:
Edit: Dazu noch
procedure TdlgFrage.CreateParams(var Params: TCreateParams);
begin inherited; Params.Style := Params.Style or WS_POPUP or WS_THICKFRAME; Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW; end;
Delphi-Quellcode:
. (Siehe
BorderStyle := bsNone
![]() Noch ein Nörgelkommentar: Messageboxen ohne Titelleiste hat z.B. List&Label, und ich hasse es. Die sind manchmal kaum zu sehen. |
AW: WS_POPUP Windowstyle hat seltsamen Nebeneffekt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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