Autor Beitrag
M@gindosch
Hält's aus hier
Beiträge: 4

Win XP

BeitragVerfasst: Fr 27.02.04 23:55 
Hallo,

kann mir jemand sagen ob (und wenn ja wie) ich bei einem MessageDlg einen "eigenen" Button einbinden kann?

Mein Problem ist folgendes:

Ich muss fürs Studium ein Rezeptverwaltungsprogramm schreiben, das auch Rezepte aus einer Datei importieren kann. Am Ende des Importiervorgangs erscheint ein MessageDlg -->

ausblenden Delphi-Quelltext
1:
if MessageDlg(IntToStr(Anzahl_neue_Rezepte)+' Rezept(e) wurden importiert!', mtInformation,[mbOk], 0) = mrOk then Statusformular.Close;					


Ich würde jetzt gerne dem User die Möglichkeit bieten sich durch einen Button "Details" die neu importierten Rezepte anzeigen zu lassen. Ist es möglich einen solchen "Details"-Button in den MessageDlg einzubinden?

Wäre cool wenn mir jemand weiterhelfen könnte
:D

Moderiert von user profile iconDeCodeGuru: Code- durch Delphi-Tags ersetzt
Urba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: Sa 28.02.04 01:48 
Ich wüsste nicht, wie man mit MessageDlg eigene Buttons hinzufügen kann, aber schau mal in der Hilfe nach MessageBox - ist quasi der Vorläufer ... da kannst du dich auch ein wenig durch die DialogLinks in der Hilfe klicken.

Gruss
Urba

_________________
Es gibt keine blöden Fragen, nur blöde Antworten :)
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 06:00 
Ich hab hier ein Tipp geschrieben mit dem man in einem MessageDlg Fenster ein eigenen Button haben kann. Dazu muß allerdings ein eingenes Meldungsfenster entwickelt werden.

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 := '&Details';
      end;
    end;
    Result := ShowModal;
  end;
end;


Hier wird der Button Ignorieren angepasst. Wenn du den brauchst, dann kannst du einen anderen dafür nehmen. Abfragen mußt du allerdings weiterhin den Ignore Button.

Hier ein Beispiel:

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

_________________
Popov
M@gindosch Threadstarter
Hält's aus hier
Beiträge: 4

Win XP

BeitragVerfasst: Sa 28.02.04 10:40 
Dankeschön für diese ausführliche Antwort. Werds gleich mal versuchen!