Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   OnClick zuweisung schlägt fehl... (https://www.delphipraxis.net/130657-onclick-zuweisung-schlaegt-fehl.html)

Teekeks 11. Mär 2009 22:17


OnClick zuweisung schlägt fehl...
 
Hi!
Ich hab schonwieder eine Frage. Ich finde absolut keine Lösung...
Ich will in einem Array of TButton die OnClick Property zuweisen. Das tuhe ich volgendermaßen:
Delphi-Quellcode:
procedure TButtons.SetClick(X: integer; ClickProcedure:TNotifyEvent);
begin
  FX:=X;
  FButtonList[FX].OnClick:=ClickProcedure;
end;
Ich habe eine Procedure namens "Buttons1Click(Sender:TObject)" und würde jetzt gerne sohier:
Delphi-Quellcode:
var Buttons:TButtons;
{...} 
Buttons.SetClick(Buttons1Click(Sender));
Die Procedure zuweisen. ich kriege aber folgende Fehlermeldung:
Zitat:

Zitat von Lazarus
Incompatible type for arg no. 2:Got "untyped",expected "<procedure variable type of procedure(TObject) of object;Register>

Wisst ihr was ich falsch mache?

gruß Teekeks

jaenicke 11. Mär 2009 22:22

Re: OnClick zuweisung schlägt fehl...
 
Mit Buttons1Click(Sender) rufst du Buttons1Click mit dem Parameter Sender auf.
Du willst doch aber nur die Prozedur übergeben.
Delphi-Quellcode:
Buttons.SetClick(0, Buttons1Click);

Luckie 11. Mär 2009 22:23

Re: OnClick zuweisung schlägt fehl...
 
Wie hast du ClickProcedure deklariert?


Zitat:

Zitat von jaenicke
Mit Buttons1Click(Sender) rufst du Buttons1Click mit dem Parameter Sender auf.
Du willst doch aber nur die Prozedur übergeben.
Delphi-Quellcode:
Buttons.SetClick(0, Buttons1Click);

Hier ist doch die Zuweisung:
Delphi-Quellcode:
FButtonList[FX].OnClick:=ClickProcedure;

jaenicke 11. Mär 2009 22:26

Re: OnClick zuweisung schlägt fehl...
 
Zitat:

Zitat von Luckie
Wie hast du ClickProcedure deklariert?

Steht doch da? :gruebel:
Delphi-Quellcode:
procedure TButtons.SetClick(X: integer; ClickProcedure:TNotifyEvent);
Das ist der Parameter von SetClick, woraus du zitiert hast. ;-)

Luckie 11. Mär 2009 22:35

Re: OnClick zuweisung schlägt fehl...
 
Nein ich meine nicht die Set-Prozedur, sondern die Click-Prozedur, als da wo der Code beim Klicken ausgeführt wird. Die Fehlermeldung kklingt so, als ob er bei der Deklaration of object vergessen hätte.

Teekeks 12. Mär 2009 05:42

Re: OnClick zuweisung schlägt fehl...
 
Hi!
Die Procedure ist so Deklariert:
Delphi-Quellcode:
    procedure Buttons1Click(Sender: TObject);

jaenicke 12. Mär 2009 05:56

Re: OnClick zuweisung schlägt fehl...
 
Zitat:

Zitat von Teekeks
Die Procedure ist so Deklariert:
Delphi-Quellcode:
    procedure Buttons1Click(Sender: TObject);

Das geht nicht, die sollte in einer Klasse stecken. Also zum Beispiel:
Delphi-Quellcode:
    procedure TForm1.Buttons1Click(Sender: TObject);
Und oben muss die dann unter private auch stehen.

Ansonsten: Hast du mal gemacht was oben schon steht?

Teekeks 12. Mär 2009 06:00

Re: OnClick zuweisung schlägt fehl...
 
Also nochmal:
Ich habs so insgesammt schon Deklariert:
Delphi-Quellcode:
  TForm1 = class(TForm)
{...}
  private
    Buttons:TButtons;
    { private declarations }
    procedure Buttons1Click(Sender: TObject);
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
{...}
  Buttons.SetClick(3,Buttons1Click);
end;

procedure TForm1.Buttons1Click(Sender: TObject);
begin
  Buttons.Name('Bu',3);
end;

jaenicke 12. Mär 2009 06:16

Re: OnClick zuweisung schlägt fehl...
 
Da du jetzt keine Fehler mehr angegeben hast, gehe ich dann einmal davon aus, dass alles funktioniert?

Teekeks 12. Mär 2009 06:17

Re: OnClick zuweisung schlägt fehl...
 
Opps. Nein Lazarus meint ich gebe zuwenige Parameter für "Buttons1Click" an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz