Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Messagebox mit farbigen TEButtons ... (https://www.delphipraxis.net/152669-messagebox-mit-farbigen-tebuttons.html)

LOMBI 1. Jul 2010 11:05

Messagebox mit farbigen TEButtons ...
 
Hallo,

wie bitte lassen sich in nachstehender Funktion die "normalen" Buttons durch farbige TEButtons ersetzen?

Delphi-Quellcode:
function MessageDlgPosC(const Msg: string; AType:
         TMsgDlgType; EButtons:
         TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Word;
begin
  with CreateMessageDialog(Msg, AType, EButtons) do begin
    case AType of
     mtWarning: Color := $0080FFFF;
     mtError: Color := $007171FF;
     mtInformation: Color := $00CAFFCA;
     mtConfirmation: Color := $00FFB9B9;
     mtCustom: Color := clBtnFace;
     else Color := clBtnFace;
    end;

    Caption := 'Hinweis';

    Left := X;
    Top := Y;
    Result := ShowModal;
  end;
end;
Vielen Dank vorab für Hilfe!

Gruß
Lombi

Bernhard Geyer 1. Jul 2010 12:25

AW: Messagebox mit farbigen TEButtons ...
 
Gar nicht. Wenn dann musst du schon die CreateMessageDialog anschauen wo wirklich das Formular zusammengebaut wird.

LOMBI 1. Jul 2010 17:10

AW: Messagebox mit farbigen TEButtons ...
 
Habe den Dialog nun mit einer eigenen Form realisert.
Jetzt würde mich noch interessieren, wie ich ein
"MB_ICONQUESTION" usw. auf die Form bringe.

Helmi 1. Jul 2010 17:31

AW: Messagebox mit farbigen TEButtons ...
 
Hallo,

am Besten ist wirklich "CreateMessageDialog" zu verwenden.

Aus diesem Link heraus könnte man folgendes machen:

Delphi-Quellcode:
function SpecialMessageDlg(const ACaption: string; const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; ButtonColor: TColor; HelpCtx: Longint): Integer;
var
  i: Integer;
  btn: TButton;

begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
    try
      Caption := ACaption;
      HelpContext := HelpCtx;
      for i := 0 to ComponentCount - 1 do
      begin
        if (Components[i] is TButton) then
        begin
          btn := TButton(Components[i]);
          btn.Color := ButtonColor;
        end;
      end;
      Result := ShowModal;
    finally
      Free;
    end;
end;
Aufruf über:

Delphi-Quellcode:
  If SpecialMessageDlg('Überschrift', 'Ist das eine Frage?', mtConfirmation, mbYesNoCancel, clRed, 0) = mrYes then
    ShowMessage('Ja, das war eine Frage');

LOMBI 1. Jul 2010 17:54

AW: Messagebox mit farbigen TEButtons ...
 
Hallo Helmi,

bei deiner Funktion meckert mein Progi, dass auf ein protected-Symbol TControl.Color nicht zugegriffen werden kann! Lassen sich vielleicht
die TEButtons doch noch verwenden?

Helmi 1. Jul 2010 17:57

AW: Messagebox mit farbigen TEButtons ...
 
Zitat:

Zitat von LOMBI (Beitrag 1032880)
Hallo Helmi,

bei deiner Funktion meckert mein Progi, dass auf ein protected-Symbol TControl.Color nicht zugegriffen werden kann! Lassen sich vielleicht
die TEButtons doch noch verwenden?

Mist! - ich vergaß dass man TButtons keine Farbe zuordnen kann
Sorry

LOMBI 1. Jul 2010 18:00

AW: Messagebox mit farbigen TEButtons ...
 
Muß ich mich also mit meiner Dialogform ohne Icons begnügen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 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