Zitat von
Matze:
Um einen Dialog selbst mit den verschiedensten Buttons zu bestücken, kann man
CreateMessageDialog verwenden, auf das ich hier aber nicht näher eingegangen bin, da man dies nicht sehr häufig benötigt.
Na ja, ich verwende das schon ab und zu
Für alle die nicht erst in der Hilfe nachlesen wollen hier ein kleines Beispiel:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
f: TForm;
begin
f := CreateMessageDialog('Test', mtInformation, [mbOk, mbCancel]);
f.Color := clRed;
f.Font.Color := clYellow;
(f.FindComponent('Cancel') as TButton).Caption := 'Huch';
f.ShowModal;
f.Free;
end;
Anmerkung:
Delphi-Quellcode:
f := CreateMessageDialog('Test', mtInformation, [mbOk, mbCancel]);
f.ShowModal;
ist vom Aussehen absolut identisch mit
MessageDlg('Test', mtInformation, [mbOk, mbCancel]);
Das liegt daran, das MessageDlg intern auch CreateMessageDialog verwendet:
Delphi-Quellcode:
// Unit: Dialogs.pas / Delphi 7
//
// Borland Delphi Visual Component Library
// Copyright (c) 1995-2001 Borland Software Corporation
...
function MessageDlg(
const Msg:
string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
Result := MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '
');
end;
...
function MessageDlgPosHelp(
const Msg:
string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
const HelpFileName:
string): Integer;
begin
with CreateMessageDialog(Msg, DlgType, Buttons)
do
try
HelpContext := HelpCtx;
HelpFile := HelpFileName;
if X >= 0
then Left := X;
if Y >= 0
then Top := Y;
if (Y < 0)
and (X < 0)
then Position := poScreenCenter;
Result := ShowModal;
finally
Free;
end;
end;
...