Hoppa till innehållet

MessageDlg

Från Wikibooks

Visar en meddelanderuta med ett valt antal knappar.

Unit
  Dialogs
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;

Beskrivning[redigera]

Anropa MessageDlg för att få en emddelanderuta som användaren ska svara på. Msg parametern är själva meddelandetexten. DlgType anger vilken typ av meddelanderuta som skall visas. Buttons anger hur många, och vilka knappar som ska finnas i meddelanderutan. HelpCtx anger hjälpinnehållets ID för hjälp ämnet som skall komma upp då använadaren klickar på hjälp knappen eller trycker på F1 tangenten då meddelenderutan visas.


Om användaren trycker ner tangenterna Ctrl+C i meddelanderutan, så placeras texten i utklippshanteraren


MessageDlg skickar tillbaka ett värde som motsvarar den knapp som användaren klickat på. I listan av parametrar så finns de möjligheter och kombinationer av knappar, samt deras respektive resultatvärde, dokumenterade.

Exempel[redigera]

procedure TForm1.Button1Click(Sender: TObject);
begin
 If MessageDlg('Wikipedia är bäst!', mtInformation,
              [mbYes, mbNo, mbCancel],0) = mrYes then
   ShowMessage('Rätt!');
end;

Denna kod ger en meddelanderuta med 3 knappar, som ser ut så här:


Alla dessa konstanter är hårdkodade, så ett val av språk finns egentligen inte. Texten på alla knappar blir alltid på engelska, även om det finns sätt att kringå detta. Se Extra tips.

Parametrar[redigera]

Dessa parametrar finns att välja på. När det gäller Meddelandetyp så skall en väljas, till skillnad från Knappar där de knappar som ska synas skall anges, exempelvis [mbYes, mbNo]. Resultatvärdet är det värde som avgörs av vilken knapp som användare klickar på.

Meddelandetyp Knappar Resultatvärde
mtWarning mbOK mrOk
mtError mbCancel mrCancel
mtInformation mbYes mrYes
mtConfirmation mbNo mrNo
mtCustom mbAbort mrAbort
mbRetry mrRetry
mbIgnore mrIgnore
mbAll mrAll
mbNoToAll mrNoToAll
mbYesToAll mrYesToAll
mrNone


Extra tips[redigera]

Om en meddelanderuta med större möjligheter att påverka text på knapparna och antalet knappar eftersöks så kan detta tips överbrygga dessa problem. Detta tips ger sig in i Delphi's egna kod och förändrar dess egenskaper. Denna typ av kodning är realativt avancerad, men ganska harmlös kod.

procedure TForm1.Button1Click(Sender: TObject);
var
Dlg: TForm;
Rslt: Integer;
begin
  Dlg := CreateMessageDialog('Mitt meddelande',mtInformation,
  [mbYes,mbNo,mbCancel]);
  Dlg.Caption := 'Överskrift';
  TButton(Dlg.FindComponent('Yes')).Caption := 'Ja';
  TButton(Dlg.FindComponent('No')).Caption := 'Nej';
  TButton(Dlg.FindComponent('Cancel')).Caption := 'Avbryt';
  Rslt := Dlg.ShowModal;
  Case Rslt of
   mrYes : ShowMessage('Rätt!');
   mrNo : ShowMessage('Fel!');
   mrCancel : ShowMessage('Fegis!');
 End;
end;

Resultatet av detta tips visar en meddelanderuta med ett eget val av text på både fönster ramen och knapparna. I princip så kan man även placera in egna komponenter i denna meddelanderuta, men det beskrivs inte här. Så här ser det ut:


Denna typ av kodning är ganska enkel, men samtidigt brilliant, då den använder sig av många av de RTTI funktioner som Delphi erbjuder.