![]() |
Eigene Buttons in MessageBox
Tach zusammen,
ich möchte in einer MessageBox nicht die Vordefinierten Buttons (OK, Abbrechen etc.) verwenden, sondern eigene Beschriftungen vergeben (in meinem Fall 'Kopieren' und 'Verschieben' meinetwegen mit den Rückgabewerden IDCOPY und IDMOVE. Die API-Hilfe gibt mir irgendwie das vernichtende Urteil, es gäbe nur die Vordefinierten Buttons... Gibt es eine elegante Möglichkeit das Prob zu lösen? Auf eine separate Form möchte ich nur ungern zurückgreifen müssen. Bin für jede Hilfe dankbar die nicht gerade damit zu tun hat, eine eigene User32.dll zu schreiben :wink: Gruß Christoph |
Um ein eigenes Formular wirst du nicht drumrum kommen. das was du wilklst, bietet die Messagebox von Windows einfach nicht.
|
Zitat:
Bin ich eigentlich der Einzige, der sowas will? Naja, nichtsdestotrotz habe ich es gerade geschafft. Zwar nicht mit MessageBox, sondern mit MessageDlg resp. CreateMessageDialog. Danke trotzdem Chris |
Wie hast du das jetzt gemacht? Die Funktionen, die du angesproochen hast, kenn doch auch nur die Buttons von der Messagebox. :roll:
Zeig mal bitte Code, das interessiert mich jetzt. |
Habe nach TButton Componenten gesucht und gefunden ;-)
Sieht dann so aus:
Delphi-Quellcode:
habe die Anregung gefunden auf
function ExtMessageDialog(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; Captions: array of string): Integer; var aMsgDlg: TForm; i: Integer; dlgButton: TButton; CaptionIndex: Integer; Left : Integer; begin aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons); Left := Trunc(aMsgDlg.Width / 2) -80; captionIndex := 0; for i := 0 to aMsgDlg.ComponentCount - 1 do begin if (aMsgDlg.Components[i] is TButton) then begin dlgButton := TButton(aMsgDlg.Components[i]); if CaptionIndex > High(Captions) then Break; dlgButton.Width := 75; dlgButton.Left := Left; Left := Left + 80; dlgButton.Caption := Captions[CaptionIndex]; Inc(CaptionIndex); end; end; Result := aMsgDlg.ShowModal; end; ![]() Chris |
AW: Eigene Buttons in MessageBox
wie genau ruft man diese function auf ?
Gelöst: ExtMessageDialog('Es fehlt die Berechtigung für die Bearbeitung!',mtError , [mbYes ,mbNo, mbAbort],['Ja', 'Nein', 'Anmelden']); |
AW: Eigene Buttons in MessageBox
Der Thread ist über 15 Jahre alt.
Heutzutage nimmt man für so etwas einen TTaskDialog. |
AW: Eigene Buttons in MessageBox
Und so was wird uns heute immer noch in der Schule gelehrt, dass man da nicht auf eine andere Programmiersprache zurückgreifen kann.
(PS: BITTE NICHT FRAU TRENSCH) mfg Linus |
AW: Eigene Buttons in MessageBox
Und die aktuelleren GUI-Richtlinien für MSWindows besagen auch, dass man das auf die Buttons draufschreibt, was gemacht wird.
z.B. in einem Anmeldendialg steht dann nicht OK/Abbrechen sondern Login/Abbrechen oder /Schließen drauf. Das Umbenennen, was mit CreateMessageDialog/TMessageDialog ging, das kann man auch mit dem TaskDialog machen. Und das der TaskDialog unter Windows XP nicht funktioniert, das kann man fast ignorrieren. XE und Win7 sind tot und auch die ersten Versionen/Updates von Win10 sind bereits abgekündigt. Der TMessageDialog war ja ursprünglich auch nur ein Bugfix, für uralte Windowse, wo dessen DialogAPIs nicht existierten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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