Ergebnis 1 bis 5 von 5
  1. #1
    Anfänger
    Registriert seit
    11.08.2010
    Beiträge
    7

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

  2. #2

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard

    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.
    Geändert von inout (19.08.2010 um 14:52 Uhr)

  3. #3
    Anfänger
    Registriert seit
    11.08.2010
    Beiträge
    7

    Standard

    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

  4. #4

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard

    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;

  5. #5
    Anfänger
    Registriert seit
    11.08.2010
    Beiträge
    7

    Standard

    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;

Ähnliche Themen

  1. ICQ UIN Generator !!!
    Von British_sky im Forum Instant Messaging
    Antworten: 11
    Letzter Beitrag: 16.05.2010, 03:12
  2. [Web.de Generator]
    Von duti im Forum VisualBasic
    Antworten: 2
    Letzter Beitrag: 13.02.2010, 18:00

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •