Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Events von Objekten, die während der Laufzeit erzeugt werden (https://www.delphipraxis.net/141767-events-von-objekten-die-waehrend-der-laufzeit-erzeugt-werden.html)

stiftII 16. Okt 2009 21:59

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
Zitat:

[Error] Unit1.pas(190): Incompatible types: 'TNotifyEvent' and 'Procedure'
Werd ich auf jeden fall machen. Würde nur erstmal gerne das Problem hier lösen.

Also hab die Prozedur in meiner Klasse eingetragen, und dann erstellt, wenn ich sie dann dem ereignis
(names[i].onclick = meineklasse.MyLabelsClick) zuweise kommt diese Fehlermeldung (siehe oben).

~stift

himitsu 16. Okt 2009 22:07

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
Wie sieht deine Funktionsdefinition nun aus?

siehe Beitrag #10

stiftII 16. Okt 2009 22:19

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
Hallo nochmal himitsu.

Das ganze sieht bei mir nun so in etwa aus.


Delphi-Quellcode:

type

  myThread = class(TThread)
  fSleepRequest : Boolean;
  IdHTTPLT: TIdHTTP;
  procedure MyLabelsClick(Sender: TObject);
  protected
    procedure Execute; override;
  Public
    Procedure GotoSleep;
    Procedure WakeUp;
  end;

......



procedure mythread.MyLabelsClick(Sender: TObject);
begin
  (Sender as TLabel).Color := clRed;
end;

procedure mythread.execute;
var
  Names : Array [0..5] of TLabel;
begin
//Objekte erzeugen
  for i:=0 to high(names) do
  begin
    Names[i] := TLabel.Create(Form1);
    Names[i].OnClick := mythread.MyLabelsClick;
  end;

//anzeigen
  for i:=0 to high(names) do
    Names[i].Parent:=Form1;

himitsu 16. Okt 2009 22:27

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
mythread.MyLabelsClick wäre für eine Klassen-Procedur
du brauchst aber eine Objekt-Prozedur

in deinem Fall
Delphi-Quellcode:
Names[i].OnClick := self.MyLabelsClick;
und das Self. kann man hier auch weglassen

stahli 16. Okt 2009 22:32

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
... und damit das im Quelltext schneller ersichtlich wird, solltest Du Deine Klasse

Delphi-Quellcode:
TMyThread = class(TThread)
nennen.

Das ist zwar nicht zwingend erforderlich, aber den Delphi-Konventionen entsprechend.

MyThread sieht eben nach einer Objektinstanz aus.
Bei TMyThread vermutet man schon eher einen Typ oder eine Klasse.

stiftII 16. Okt 2009 23:05

Re: Events von Objekten, die während der Laufzeit erzeugt we
 
Danke, das macht Sinn!.

Funktioniert zudem noch wunderbar :).

~stift


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Seite 2 von 2     12   

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