-
Fehlermeldungs Generator
Hallo
wieso sagt der wen ich Compiliere:
Inkompatible typen: TMsgDlgBtn und Set
was mache ich falsch?
was Mus ich ändern?
hoffe auf freundliche Hilfe.
Code:
procedure TForm1.Label131Click(Sender: TObject);
var
DlgType: TMsgDlgType;
DlgBtn: TMsgDlgBtn;
begin
// if Fehler = Error Then DlgType := mtError
// else if Information = 'Info' Then DlgType := mtInformation
// else if Warnung = 'Warn' Then DlgType := mtWarning
// else if Frage = 'Confirmation' Then DlgType := mtConfirmation
// else if Ohne = 'Custom' Then DlgType := mtCustom;
if RadioButton1.Checked = True Then DlgBtn := mbOK
else if RadioButton2.Checked = True Then DlgBtn := mbAbortRetryIgnore
else if RadioButton3.Checked = True Then DlgBtn := mbOkCancel
else if RadioButton4.Checked = True Then DlgBtn := mbRetry
else if RadioButton5.Checked = True Then DlgBtn := mbYesNo
else if RadioButton6.Checked = True Then DlgBtn := mbYesNoCancel;
MessageDlg(Edit1.Text, Edit2.Text, DlgType, [DlgBtn], 0);
end;
-
Sorry, für die späte Antwort, aber ich habe den Thread gerade eben erst gesehen, ich hoffe es hilft dir trotzdem.
Der zweite Parameter von MessageDlg erwartet keinen string als Typ, sondern einen TMsgDlgType.
Das bedeutet, dass es folgendermaßen funktionieren müsste:
Code:
MessageDlg(Edit1.Text, DlgType, [DlgBtn], 0);
Sprich der Titel wird automatisch vergeben, je nach dem, welchen MsgDlgType man angibt.
Beachte aber, dass du DlgType natürlich auch irgendetwas zuweisen solltest, bevor du MessageDlg aufrufst.
Btw: Einen Vergleich auf True und False sollte man vermeiden.
-
ok nun gut ich benutze nun auch schon die MessageBox Funktion das ich einen Titel selber vergeben kann.
Das mit True und False ist ein guter Tipp aber es geht trotzdem nicht einzelne Buttons alleine gehen aber Kombinationen aus mehreren gehen nicht das ist mein Problem ?
haben sie mir da auch einen Tipp
-
Das liegt wohl daran, dass einige dieser Konstanten bereits Sets sind und einige nicht.
Das könnte man z.B. so lösen:
Code:
var
DlgType: TMsgDlgType;
DlgBtn: set of TMsgDlgBtn;
begin
// if Fehler = Error Then DlgType := mtError
// else if Information = 'Info' Then DlgType := mtInformation
// else if Warnung = 'Warn' Then DlgType := mtWarning
// else if Frage = 'Confirmation' Then DlgType := mtConfirmation
// else if Ohne = 'Custom' Then DlgType := mtCustom;
if RadioButton1.Checked = True Then DlgBtn := [mbOK]
else if RadioButton2.Checked = True Then DlgBtn := mbAbortRetryIgnore
else if RadioButton3.Checked = True Then DlgBtn := mbOkCancel
else if RadioButton4.Checked = True Then DlgBtn := [mbRetry]
else if RadioButton5.Checked = True Then DlgBtn := mbYesNo
else if RadioButton6.Checked = True Then DlgBtn := mbYesNoCancel;
MessageDlg(edit1.text, DlgType, DlgBtn, 0);
end;
-
ja klar ne Habs gerade in diesem Moment selber herausgefunden TMsgDlgBtn durch Cardinal ersetzen
nun funzt alles
sorry dafür mein Fehler
danke für die Mühe.
jetzt muss ich nur noch die Icons machen...
es sieht nun so aus:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
DlgType: Cardinal;
DlgBtn: Cardinal;
begin
// if Fehler = 'Error' Then DlgType := MB_ICONSTOP
// else if Information = 'Info' Then DlgType := mtInformation
// else if Warnung = 'Warn' Then DlgType := mtWarning
// else if Frage = 'Confirmation' Then DlgType := mtConfirmation
// else if Ohne = 'Custom' Then DlgType := mtCustom;
if RadioButton1.Checked Then DlgBtn := MB_OK
else if RadioButton2.Checked Then DlgBtn := MB_ABORTRETRYIGNORE
else if RadioButton3.Checked Then DlgBtn := MB_OKCANCEL
else if RadioButton4.Checked Then DlgBtn := MB_RETRYCANCEL
else if RadioButton5.Checked Then DlgBtn := MB_YESNO
else if RadioButton6.Checked Then DlgBtn := MB_YESNOCANCEL;
MessageBox(0, PChar(String(Edit2.Text)), PChar(String(Edit1.Text)), DlgBtn + DlgType);
end;