- 
	
	
	
		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;