(Erledigt) onClick zur Laufzeit erstellen

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

(Erledigt) onClick zur Laufzeit erstellen

Beitrag von Levario »

Ich habe zu dem Thema bislang folgendes gefunden.
https://www.delphipraxis.net/46689-pane ... ellen.html

Leider funktioniert mein Code nicht, könnt ihr mir etwas auf die Sprünge helfen? Ich bekomme den Error
bei mypanel.OnClick:= mybuttonClick; und mytext.OnClick := mybuttonClick;
der Fehler lautet: Wrong numbers of parameters spezified for call to mybuttonClick.

Code: Alles auswählen

type

  { TMainForm }

  TMainForm = class(TForm)  
  ...
   procedure mybuttonClick(Sender : TObject);
  private
    procedure CreateNewButton;
  public
  end;       
  
  procedure TMainForm.CreateNewButton;
var
  mypanel : TPanel;
  myimage : TImage;
  mytext : TLabel;
  stri : string;
begin

  stri := IntToStr(inti);

 mypanel:=TPanel.Create(Self);
 mypanel.parent := MainForm;
 mypanel.top := 93;
 mypanel.height := 32;
 mypanel.Width:= 160;
 mypanel.name := 'MyPanel' + stri;
 mypanel.caption := '';
 mypanel.color := TColor($00333333);
 mypanel.OnClick:= mybuttonClick;

 mytext := TLabel.Create(Self);
 mytext.parent := mypanel;
 mytext.top := 5;
 mytext.left := 39;
 mytext.Font.color := clWhite;
 mytext.Font.Name := 'Segoe UI';
 mytext.Font.Size := 12;
 mytext.Font.Style:= [fsBold];
 mytext.caption := 'MyWebseite';
 mytext.name := 'MyText' + stri;
 mytext.OnClick := mybuttonClick;
end;

procedure TMainForm.mybuttonClick(Sender : TObject);
begin
 OpenURL('https://www.mywebsite.de');
end;
end.                                  

Zuletzt geändert von Levario am So 5. Nov 2023, 08:23, insgesamt 2-mal geändert.
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: onClick zur Laufzeit erstellen

Beitrag von wennerer »

Guten Morgen,
du musst ein @ davor setzen.

Sieht dann so aus:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TMainForm }

  TMainForm = class(TForm)
    procedure FormCreate(Sender : TObject);
    procedure MyOnClick(Sender : TObject);
  private
    MyButton : TButton;
  public

  end;

var
  MainForm : TMainForm;

implementation

{$R *.lfm}

{ TMainForm }


procedure TMainForm.FormCreate(Sender : TObject);
begin
 MyButton     := TButton.Create(self);
 MyButton.Parent := self;
 MyButton.SetBounds(20,20,150,25);
 MyButton.Caption := 'MyOnClick';
 MyButton.OnClick := @ MyOnClick;
end;

procedure TMainForm.MyOnClick(Sender : TObject);
begin
  showmessage('Du hast geklickt!');
end;

end.
Viele Grüße
Bernd
Dateianhänge
project1.zip
(105.37 KiB) 70-mal heruntergeladen

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: onClick zur Laufzeit erstellen

Beitrag von theo »

Levario hat geschrieben:
So 5. Nov 2023, 06:04
Ich habe zu dem Thema bislang folgendes gefunden.
https://www.delphipraxis.net/46689-pane ... ellen.html
Wenn du Delphi Code direkt übernehmen willst, geht auch {$MODE DELPHI}
https://www.freepascal.org/docs-html/prog/progse74.html

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: onClick zur Laufzeit erstellen

Beitrag von Levario »

Wow, guten morgen,

schnelle Hilfe vielen Dank die Software läuft.

Gruß Levi
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: (Erledigt) onClick zur Laufzeit erstellen

Beitrag von Mathias »

Wen du folgendes schreibst und anschliessend [Ctrl + Shift + c] drückst, macht es dir alles automatisch.

Code: Alles auswählen

OnClick:=
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: (Erledigt) onClick zur Laufzeit erstellen

Beitrag von theo »

Mathias hat geschrieben:
So 5. Nov 2023, 15:05
Wen du folgendes schreibst und anschliessend [Ctrl + Shift + c] drückst, macht es dir alles automatisch.

Code: Alles auswählen

OnClick:=
Eben nicht! Er macht kein @.
Oder in welcher Version/Einstellung ist das so?

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: (Erledigt) onClick zur Laufzeit erstellen

Beitrag von Mathias »

theo hat geschrieben:
So 5. Nov 2023, 15:50
Mathias hat geschrieben:
So 5. Nov 2023, 15:05
Wen du folgendes schreibst und anschliessend [Ctrl + Shift + c] drückst, macht es dir alles automatisch.

Code: Alles auswählen

OnClick:=
Eben nicht! Er macht kein @.
Oder in welcher Version/Einstellung ist das so?
In der aktuellen Stable ohne irgendwelchen Einstellungen.
Und dies bei einem neuen leeren Project.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  OnClick:=  // Hier : [Ctrl + Shift + c] 
end;  
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten