Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Sa 28.02.04 04:48 
Hier ein Tipp wie man in einen MessageDlg Meldungsfenster eine Schaltfläche mit einer eigenen Bezeichnung einfügen kann, bzw. die vorhandenen nach eigenen Bedürfnissen ändern kann. Tatsächlich ist es nicht das MessageDlg Fenster das beeinflußt wird, sondern eine eigenes Meldungsfenster. Es wird mit Hilfe von CreateMessageDialog erstellt. Allerdings werden nicht neuen Buttons hinzugefügt, sondern die vorhandenen in der Bezeichnung verändert. Siehe dazu auch diesen Tipp.

Für den Tipp wird eine Funktion erstellt die eine eigenes MessageDlg Fenster erstellt. Der Button "Ignorieren" wird insoweit verändert, als daß er eine andere Caption Bezeichnung bekommt. Um abzufragen ob dieser Button geklickt wurde muß allerdings weiterhin geprüft werden ob der mbIgnore Button (mrIgnore Rückgabewert) geklickt wurde.

Die Parameter sind die gleichen wie bei MessageDlg. Nur die Bezeichnung des Ignore Buttons wurde intern verändert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
function MyMessageDlg(const Msg: String; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; HelpCtx: Longint): Word;
var
  Comp: TComponent;
  k: Integer;
begin
  with CreateMessageDialog(Msg, AType, AButtons) do begin
    for k := 0 to ComponentCount - 1 do
    begin
      Comp := Components[k];
      if Comp is TButton then with TButton(Comp) do
      begin
        {Hier dem Button "Ignorieren" eine neue Bezeichnung geben.}
        {Das ändert aber nichts an der Abfrageart. Es muß weiterhin _}
        {nach if MyMessageDlg(...) = mrIgnore abgefragt werden.}
        if UpperCase(Name) = 'IGNORE' then Caption := 'Mein &Button';
      end;
    end;
    Result := ShowModal;
  end;
end{Popov}



Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if MyMessageDlg('Das ist die Message.', mtInformation, [mbOk, mbIgnore], 0) =
    mrIgnore then
    ShowMessage('Es wurde der Button "Mein Button" geklickt. Tatsächlich ist ' +
      'aber der Button "Ignorieren", nur mit anderen Caption-Bezeichnung.');
end;

_________________
Popov