Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnClick bei Komponenten, die zu Laufzeit erstellt wurden! (https://www.delphipraxis.net/31133-onclick-bei-komponenten-die-zu-laufzeit-erstellt-wurden.html)

Nicolai1234 4. Okt 2004 20:42


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...

SirThornberry 4. Okt 2004 20:48

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:
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;
so in der art kannst du das machen...

Nicolai1234 4. Okt 2004 21:05

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
Bei mir geht das alles nicht!
Ich habe das hier:
http://www.delphipraxis.net/internal...fzeit+zuweisen
noch probiert, aber auch da kommen nur fehler!
Kann mir vllt. einer sagen, wo ich das alles hinschreiben muss?

alcaeus 4. Okt 2004 21:07

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
Hi Nicolai,

Zitat:

Zitat von Nicolai1605
Kann mir vllt. einer sagen, wo ich das alles hinschreiben muss?

Wichtig ist, dass du die OnClick-Routine erst NACH dem erstellen der Images zuweist. Ansonsten gibts eine schöne AV.

Greetz
alcaeus

SirThornberry 4. Okt 2004 21:10

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;

Nicolai1234 4. Okt 2004 21:13

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
Momentan erstelle ich sie so:
Delphi-Quellcode:
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;
Wo muss ich denn die OnClick procedure genau hinschreiben?

alcaeus 4. Okt 2004 21:15

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
Hi Nicolai,

Code:
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;
Greetz
alcaeus

Nicolai1234 4. Okt 2004 21:18

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
Zitat:

Zitat von alcaeus
Hi Nicolai,

Code:
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;
Greetz
alcaeus

Dann sieht es so aus:
Zitat:

Zitat von Mein Delphi 6 Professional
[Fehler] Unit1.pas(59): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'


SirThornberry 4. Okt 2004 21:18

Re: OnClick bei Komponenten, die zu Laufzeit erstellt wurden
 
und anstelle von
Delphi-Quellcode:
height := hw;
width := hw;
left := (x-1)*hw+190;
top := (y-1)*hw+5;
solltest du
Delphi-Quellcode:
setbounds((x-1)*hw+190, (y-1)*hw+5, hw, hw);
schreiben da intern sonst 4 mal "SetBounds" aufgerufen wird

Nicolai1234 4. Okt 2004 21:28

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.
Seite 1 von 2  1 2      

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