Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ein Event mit eigendem Sender aufrufen (https://www.delphipraxis.net/157427-ein-event-mit-eigendem-sender-aufrufen.html)

Zelosfan 11. Jan 2011 15:46

Delphi-Version: 2010

Ein Event mit eigendem Sender aufrufen
 
Also mein Problem ist ,dass ich ein Hover-Image habe und wenn ich darauf klicke(es folgt "praktisch" meinem Mauszeiger => Feldersystem) soll es den Klick auf das darunte liegende Feld projezieren habe mir also gedacht ich schreibe den aufruf ,auf das jeweilige Feld unter dem HoverImage, beim entern des Mauszeigers über das Feld neu:
Delphi-Quellcode:
procedure TGame.OnFieldEnter(Sender: TObject);
...
begin
...
  Game.HoverImage.OnClick := (Sender as TField).OnClick(Sender);
...
end;
Dabei ist aber das Problem ,dass ich bei TNotifyEvent meinen Sender nicht selber angeben darf :(
Delphi-Quellcode:
[DCC Fehler] E2010 Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'
(Gleiches Problem ,wenn ich die resultierende Prozedur aus TField.OnClick direkt aufrufe)
sondern nur so:
Delphi-Quellcode:
  Game.HoverImage.OnClick := (Sender as TField).OnClick;
Aber dann habe ich das HoverImage als Sender ._. wobei logischerweise das Feld als Sender übergeben werden soll.


Hatte mit dieser Problemmatik bis jetz noch nichts zu tun und ich hoffe jemand hat eine Lösung dafür :D

Danke schonmal für jeden Vorschlag ^^

MondiBob 11. Jan 2011 16:19

AW: Ein Event mit eigendem Sender aufrufen
 
Also ich hoffe, dass ich dein Problem richtig verstanden habe, aber so wie ich das verstanden habe soll bei dem Click auf dein TGame ein Click auf das HoverImage gemacht werden.
Delphi-Quellcode:
Game.HoverImage.OnClick := (Sender as TField).OnClick;
Damit weißt du dem OnClick Event aber nur eine Procedure zu, die dabei ausgeführt werden soll, also brauchst du. Bei nem Button geh:
Delphi-Quellcode:
Game.HoverImageClick(Sender)
Geht soweit ich weiß aber nur, wenn bei OnClick schon eine Methode zugewiesen wurde.

Zelosfan 11. Jan 2011 16:49

AW: Ein Event mit eigendem Sender aufrufen
 
Ich möchte bei dem Hovern über ein Feld den Parameter von der resultierenden Prozedur aus dem Klick (der ausgeführt wird wenn man auf das HoverImage klickt) fest angeben.

Delphi-Quellcode:
procedure TGame.OnFieldEnter(Sender: TObject);
...
begin
...
  Game.HoverImage.OnClick := (Sender as TField).OnClick(Sender);
...
end;
bzw:
Delphi-Quellcode:
procedure TGame.OnFieldEnter(Sender: TObject);
...
begin
...
  Game.HoverImage.OnClick := Game.OnFieldClick(Sender); // resultierende Prozedur die hinter dem OnClick des Feldes steckt
...
end;

alfold 11. Jan 2011 17:18

AW: Ein Event mit eigendem Sender aufrufen
 
Ich würde sagen
Delphi-Quellcode:
Game.HoverImage.OnClick:= Game.FieldClick;
und in der Procedur
Delphi-Quellcode:
procedure TGame.Field.OnClick(Sender: TObject);
begin
    if Sender = ????? then

end
ansonsten schwer zu verstehen was Du genau willst!?

oder
Delphi-Quellcode:
procedure TGame.OnFieldEnter(Sender: TObject);
...
begin
...

Game.HoverImageClick(Sender);

end;
gruss alfold


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.

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