Button dynamisch zur Laufzeit erzeugen

Rund um die LCL und andere Komponenten
Antworten
Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Button dynamisch zur Laufzeit erzeugen

Beitrag von Eb »

Hallo,

Ich habe bei Delphi-Tutorials ein Beispiel gefunden, wie man dynamisch einen Button erzeugt.

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
    procedure Button2Click(Sender: TObject);
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Button: TButton;
begin
  Button:=TButton.Create(Self);
  Button.Parent := Self;
  Button.Caption := 'Alter Titel';
  Button.Left := 100;
  Button.Top := 100;
  Button.OnClick := Button2Click;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Sender is TButton then
    TButton(Sender).Caption:='Neuer Titel';
end;
 
 
 
initialization
  {$I unit1.lrs}
 
end.

Das läuft unter Turbo-Delphi anstandslos, unter lazarus bringt er bei der Zeile
Button.OnClick := Button2Click;

die Meldung:
Wrong number of parameters specified for call to "Button2Click"

Dass die Anzahl Parameter nicht stimmt kann ich nachvollziehen, bloss was muss ich denn als Parameter mitgeben, damit es funktioniert?

Eberhard

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

mode delphi aktiv !? Ansonsten musst du die Syntax vom fpc mode nehmen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Ich denke ich habe mode object Pascal,
folgendes wird ja automatisch erzeugt:

Code: Alles auswählen

{$mode objfpc}{$H+}

Was müsste ich denn bei diesem Mode als Parameter mitgeben damit es tut?

Oder wie wäre die Syntax um mode delphi einzustellen ?

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Code: Alles auswählen

Button.OnClick := @Button2Click;
Das @-Fehlt

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Perfekt!

Vielen Dank,
Eberhard

Antworten