Einzelnen Beitrag anzeigen

KRM

Registriert seit: 6. Feb 2007
Ort: Kölle am Rhing
24 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Daten von einem Formular in ein anderes übernehmen

  Alt 7. Mai 2007, 12:27
Es funktioniert leider nicht, gremlin ...

Hier mal der komplette code des Formulars:

Delphi-Quellcode:
unit rahmen_aendern;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, main;

type
  TForm5 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Memo1: TMemo;
    Label4: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    class function Execute(var EditParam:IR_Rahmen):Boolean;
  end;

type
  IR_Rahmen = record
    name : string[50];
    geraeteaddy : string[5];
    befehl : string[7];
    beschreibung : string[150];
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}


//class function TForm5.Execute(var EditParam:IR_Rahmen):Boolean;
//-> FEHLER: Deklaration von 'Execute' unterscheidet sich von vorheriger Deklaration
class function Execute(var EditParam:IR_Rahmen):Boolean;
begin
  with Form5.Create(Application) do begin
    Edit1.Text := EditParam.Name;
    Edit2.Text := EditParam.geraeteaddy;
    Edit3.Text := EditParam.befehl;
    Memo1.Text := EditParam.beschreibung;
    Result := (ShowModal=mrOK);
    if Result then begin
      EditParam.Name := Edit1.Text;
      EditParam.geraeteaddy := Edit2.Text;
      EditParam.befehl := Edit3.Text;
      EditParam.beschreibung := Memo1.Text;
    end;
  end;
end;

// OK-Button
procedure TForm5.Button1Click(Sender: TObject);
begin
  close; // Eigenschaft: ModalResult = mrOk
end;

// Abbrechen-Button
procedure TForm5.Button2Click(Sender: TObject);
begin
  close; // Eigenschaft: ModalResult = mrCancel
end;

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if (ModalResult=mrOK) then begin
    // Hier die Werte prüfen auf plausibiblität
  end;
end;

end.
Wenn ich

class function TForm5.Execute(var EditParam:IR_Rahmen):Boolean; Bei der funktions-def. angebe kommt die Fehlermeldung:
Deklaration von 'Execute' unterscheidet sich von vorheriger Deklaration Wenn ich es dann so ändere, wie es oben steht ist die Fehlermeldung zwar weg, aber eine andere bleibt:

Delphi-Quellcode:
[Pascal Fehler] rahmen_aendern.pas(28): E2065 Ungenügende Forward- oder External-Deklaration: 'TForm5.Execute'
[Pascal Fataler Fehler] main.pas(109): F2063 Verwendete Unit 'rahmen_aendern.pas' kann nicht compiliert werden

Dabei wird mir dann die Zeile 28 knallrot angestrichen, also dort, wo die Deklaration von der function ist...

Was habe ich falsch gemacht?
Nebenbei noch die Frage: Kann ich die Button-proceduren so stehen lassen?
Ich habe bei den Buttons einfach die Eigenschaft ModalResult geändert.
Wird dann beim Schließen des Formulars automatisch der Wert des Buttons, dass gedrückt wurde zurück gegeben?

Die Plausibilitätsprüfungen habe ich im "IR-Rahmen erstellen"-Button über onKeyPress-Ereignisse gelöst.
  Mit Zitat antworten Zitat