Prozeduren in zweiter Form

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Simor
Beiträge: 11
Registriert: Do 19. Sep 2013, 15:49

Prozeduren in zweiter Form

Beitrag von Simor »

Ich möchte relativ einfsch eine zweite Form erstellen, die aus der ersten per buttonclick geöffnet wird, und auf der ein Button eine Prozedur ausführt. das sieht bisher so aus:

Code: Alles auswählen

 
//...
 
   procedure b1c(Sender: TObject);
   procedure b2c(Sender: TObject);
var
  Form1: TForm1;
  f:TForm;
  b1,b2:TButton;
  e1,e2: tedit;
//... 
procedure TForm1.Button5Click(Sender: TObject);
begin    
f:=TForm.create(nil);
  f.Width:=200;
  f.Height:=200;
  f.top:= 250;
  f.left:=500;
  f.caption:='Zweites Fenster';
 
  b1:=TButton.create(f);
  b1.parent:=f;
  b1.top:= 10;
  b1.left:=10;
  b1.onclick:= @b1c; //hier ist das Problem
 
  e1:=TEdit.create(f);
  e1.parent:=f;
  e1.top:= 45;
  e1.width:= 150;
  e1.left:=10;
 
  f.show;  end;
 
procedure b1c(Sender: Tobject);
begin
   showmessage('Hi');
end;   
//...
 
An der markierten Stelle stoppt die komplimierung dann mit den Hinweis

Code: Alles auswählen

unit1.pas(340,16) Error: Incompatible types: got "<address of procedure(TObject);Register>" expected "<procedure variable type of procedure(TObject) of object;Register>"
 
Weiß jemand wo mein Fehler liegt?

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Prozeduren in zweiter Form

Beitrag von Michl »

Du musst die Proceduren in eine Klasse stecken z.B.:

Code: Alles auswählen

  TForm1 = class(TForm)
  private
    { private declarations }
  public
    procedure b1c(Sender: TObject);
    procedure b2c(Sender: TObject);
  end;  
...
implementation
 
procedure TForm1.b1c(Sender: TObject);
begin
  ...
end;
 
procedure TForm1.b2c(Sender: TObject);
begin
  ...
end;   
dann sollte es passen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Simor
Beiträge: 11
Registriert: Do 19. Sep 2013, 15:49

Re: Prozeduren in zweiter Form

Beitrag von Simor »

danke

Antworten