Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi dynamische Timage onclick (https://www.delphipraxis.net/49876-dynamische-timage-onclick.html)

simonko 17. Jul 2005 15:06


dynamische Timage onclick
 
Ich hab jetzt Timages zur laufzeit erstellt in einer prozedur;
Delphi-Quellcode:
      s:=stacktostring(p);
      form1.bild[i]:= TImage.Create(form1);
      form1.bild[i].Parent:=form1;
      form1.bild[i].Left:=100+(i*20);
      form1.bild[i].Top:=250;
      form1.bild[i].Width:=60;
      form1.bild[i].Height:=90;
      form1.bild[i].Picture.LoadFromFile('C:\'+s+'.JPG');
      form1.bild[i].Visible:=true;
jetzt möcht ich aber dass jedes bild bei onclick etwas anderes macht. kann ich dass da noch irgendwie zuweisen? Ich bräuchte das s : string dass zu jeden bild zugewiesen wordn ist und es soll dann eine prozedur aufrufen die für jeden gleich ist. ich muss eigentlich nur den namen des bildes wissen.

vor allem versteh ich nicht wo ich das onclick reinschreiben muss. denn bei normalen Timage gibts ja die events onclick. aber bei diesen ist das etwas anders.. ich kenn mich nicht so aus


bitte um hilfe
MFG

Ultimator 17. Jul 2005 15:13

Re: dynamische Timage onclick
 
Du könntest in dieser Schleife auch gleich allen Images-Kompos die gleich eOnClick-Prozedur zuweisen, und auch noch den Tag der Image-Kompos auf das aktuelle i setzen. Dann kannst du im Eventhandler überprüfen, welchen Tag die Kompo hat und je anchdem handeln.

r2c2 17. Jul 2005 15:15

Re: dynamische Timage onclick
 
Hallo simonko :hi:
das geht eigentlich ganz einfach:
Delphi-Quellcode:
procedure MyImageClick(Sender: TObject);
begin
  with Sender as TImage do
  begin
    ShowMessage(Name);
    //oder
    if Tag = 25 then
      DoSomething;
    //oder mach was anderes mit deinem Bild
  end;
end;

...

form1.bild[i].OnClick := MyImageClick(Sender: TObject);
mfg

Christian

jfheins 17. Jul 2005 15:29

Re: dynamische Timage onclick
 
Soweit ich weis, geht die Zuweisung dann aber so:
Delphi-Quellcode:
form1.bild[i].OnClick := MyImageClick;
;)

sniper_w 17. Jul 2005 15:36

Re: dynamische Timage onclick
 
Daraus wird nichts.
Delphi-Quellcode:
TNotifyEvent = procedure (Sender:TObject) of object
und ihr bietet nur
Delphi-Quellcode:
TNotifyEvent = procedure (Sender:TObject);
Es muss also so deklariert sein:
Delphi-Quellcode:
procedure TFomr1.MyOnClick(Sender:TObject);
begin
 case TComponent(Sender).Tag of
  1:;
  2:;
  // usw....
 end;
end;
EDIT: und so sollte man die Images erstellen:
Delphi-Quellcode:
procedure TForm1.ErstelleImages(ImgCount:integer);
begin
  SetLength( bild, imgCount);
  for i:=0 to ImgCoun-1 do
  begin
    bild[i] := Timage.Create(Self);
    with Bild[i] do
    begin
      Parent := Self;
      // andere eigenschaften zuweisen
      Tag := i; // <<<<<-------SEHR WICHTIG !!!
      OnClick := MyOnClick;
    end;
  end;
end;

jfheins 17. Jul 2005 15:45

Re: dynamische Timage onclick
 
Und dann nehmen wir am besten gleich eine Typed-Object-List und ausserdem schreiben wir z.B. statt TFomr1 TForm1 ;)

r2c2 17. Jul 2005 15:53

Re: dynamische Timage onclick
 
Zitat:

Zitat von jfheins
Soweit ich weis, geht die Zuweisung dann aber so:
Delphi-Quellcode:
form1.bild[i].OnClick := MyImageClick;
;)

:oops: Hast Recht! :oops:

mfg

Christian

//Edit: Hm.. da waren wohl noch einige Posts dazwischen. :oops:
Ich glaub die waren auch etwas ausführlicher. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 Uhr.

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