![]() |
OnClick bei Komponenten, die zu Laufzeit erstellt wurden!
Ich habe ca. 100 TImage zur Laufzeit erstellt! (Array[1..10,1..10] of Timage)
Sie werden wie gesagt erst zur Laufzeit erstellt. Wenn ich dann auf ein Bild klicke, soll eine bestimmte Bilddatei in das TImage geladen werden! Wie kann ich das machen, ich kann ja schlecht für alle Images eine OnClick procedure schreiben! Und selbst wenn; wie weist man die dann dem Image zu? Fragen über Fragen; wie würdet ihr das machen? Danke im voraus... |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
einfach allen Images die gleiche onClick procedure zuweisen. einfach beim Creieren allen einen namen geben und dann mit findcomponent denen das gleiche zuweisen. Und dann im OnClick den Sender zu TImageCasten und anhand dessen unterschiedliche Bilder in den Sender laden.
//wenn zum beispiel die Bilder "image1" bis "image15" heißen
Delphi-Quellcode:
so in der art kannst du das machen...
procedure TForm.fOnClickProc(Sender.TObject);
var LImage: TImage; begin if Sender is TImage then begin LImage := TImage(Sender); LImage.LoadFromFile('bild' + copy(LImage.name, 6, length(LImage.name)) + '.bmp'); end; end; |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Bei mir geht das alles nicht!
Ich habe das hier: ![]() noch probiert, aber auch da kommen nur fehler! Kann mir vllt. einer sagen, wo ich das alles hinschreiben muss? |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Hi Nicolai,
Zitat:
Greetz alcaeus |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
wie erzeugst du derzeit die images? So sollte es ohne probleme gehen (source im onCreate des Forms)
Delphi-Quellcode:
var LImage: TImage;
LCount: Integer; begin for LCount := 1 to 100 do begin LImage := TImage.Create; LImage.Parent := Self; LImage.Name := 'Bild' + inttostr(LCount); LImage.OnClick := youOnClickEventProc; //eventuell noch die Größe des Images setzen end; end; |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Momentan erstelle ich sie so:
Delphi-Quellcode:
Wo muss ich denn die OnClick procedure genau hinschreiben?
var Quadrat: Array [1..100,1..100] of TImage;
... ... for x := 1 to 10 do for y := 1 to 10 do begin Quadrat[x,y] := TImage.Create(form1); with Quadrat[x,y] do begin parent := form1; height := hw; width := hw; left := (x-1)*hw+190; top := (y-1)*hw+5; picture.LoadFromFile('Pictures\Blume.ico'); end; end; |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Hi Nicolai,
Code:
Greetz
var Quadrat: Array [1..100,1..100] of TImage;
with Quadrat[x,y] do begin parent := form1; height := hw; width := hw; left := (x-1)*hw+190; top := (y-1)*hw+5; picture.LoadFromFile('Pictures\Blume.ico'); [color=red]OnClick := DeineProzedur;[/color] end; end; alcaeus |
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Zitat:
Zitat:
|
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
und anstelle von
Delphi-Quellcode:
solltest du
height := hw;
width := hw; left := (x-1)*hw+190; top := (y-1)*hw+5;
Delphi-Quellcode:
schreiben da intern sonst 4 mal "SetBounds" aufgerufen wird
setbounds((x-1)*hw+190, (y-1)*hw+5, hw, hw);
|
Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
Ok, habe ich geändert, aber die Fehlermeldung von oben ist immernoch da!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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