Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arrayelement anklicken (https://www.delphipraxis.net/84737-arrayelement-anklicken.html)

Sotov 20. Jan 2007 22:25


Arrayelement anklicken
 
Ich habe folgendes Problem!

Ich habe ein array of TImage und möchte, dass die einzelnen elemnte angeklickt werden können.

Karte[1].OnClick funktioniert nicht

Delphi-Quellcode:
var
  Form1: TForm1;
  var karte : array [1..100] of TImage;

implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
var j,i,a,b :integer;
begin
a:=2;
b:=2;
for j:= 1 to 4 do begin
for i:=1 to 5 do begin
  Karte[i]:=TImage.Create(Self);
  Karte[i].Parent:= Self;
  Karte[i].Left:=a;
  Karte[i].Top:= b;
  Karte[i].AutoSize:=True;
  Karte[i].Picture := Image1.picture;
  a:=a+100;
  end;
  a:= 2;
  b:= b+ 100;
 end;

end;
Ich habe die Bilder in die Form geladen um "picture.loadfromfile();" nicht zu benutzen, damit ich am Ende nur eine Exedatei habe.

Ich möchte das Spiel Memory machen.

Vielen Dank im Voraus!

MrKnogge 20. Jan 2007 22:33

Re: Arrayelement anklicken
 
Du musst dem OnClieck-Event auch eine Prozedur zuweisen :wink:
Oder was genau funktioniert nicht ?

Gruß

Sotov 20. Jan 2007 22:45

Re: Arrayelement anklicken
 
Ja, aber ich kann ja mit einem Array keine OnClick procedur machen!

Ich möchte, dass wenn ich auf das element karte[1] klicke dann folgendes passiert karte[1].picture := Image2.picture;
Aber das klappt nur, wenn sich dieses Element auch anklicken lässt, nur weiss ich nicht, wie ich es dazu bringen soll, anklickbar zu sein!

Christian Seehase 20. Jan 2007 22:50

Re: Arrayelement anklicken
 
Sotov,

Zitat:

Zitat von Sotov
Ja, aber ich kann ja mit einem Array keine OnClick procedur machen!

Wieso nicht?

Delphi-Quellcode:
TForm1 = class(TForm)
//...
  procedure Image1Click(Sender: TObject);
//...


procedure TForm1.Image1Click(Sender: TObject);
begin
//...
end;

//...

Karte[i].OnClick := Image1Click;

MrKnogge 20. Jan 2007 22:54

Re: Arrayelement anklicken
 
Deine OnClick Prozedur müsste dann ungefair so aussehen:

Delphi-Quellcode:
procedure TForm1.OnMyClick(Sender: TObject);
begin
  (Sender as TImage).picture := Image2.picture;
end;
Gruß

Sotov 20. Jan 2007 22:58

Re: Arrayelement anklicken
 
Hmm, so hatte ich es mir am Anfang auch gedacht, aber irgendwie klappt es nicht!

Delphi-Quellcode:
procedure TForm1.Image1Click(Sender: TObject);
begin
Karte[1].OnClick := Image1Click;
showmessage('hi');
end;
Es passiert absolut nichts, wenn ich das objekt karte[1] anklicke!

Zitat:

Deine OnClick Prozedur müsste dann ungefair so aussehen:
Sorry, ich bin ein Anfänger und den Code habe ich leider nicht verstanden!

MrKnogge 20. Jan 2007 23:01

Re: Arrayelement anklicken
 
Dieser Teil muss in deine Schleife, dass jedes Image, diese Prozedur zugewiesen bekommt.
Delphi-Quellcode:
Karte[1].OnClick := Image1Click;
[Add]
Zitat:

Zitat von Sotov
Sorry, ich bin ein Anfänger und den Code habe ich leider nicht verstanden!

Diesen Code
Delphi-Quellcode:
(Sender as TImage).picture := Image2.picture;
schreibst du in dein Image1Click.
Zur Erklärung:
Durch Sender "weis" die Prozedur, welches TImage angeklickt wurde und in das läd er dann das Bild aus Picture2.

Gruß

Sotov 20. Jan 2007 23:04

Re: Arrayelement anklicken
 
Super! Klappt alles!

Vielen dank!

himitsu 20. Jan 2007 23:16

Re: Arrayelement anklicken
 
bist du sicher, daß alles richtig funktioniert?
Delphi-Quellcode:
for j := 1 to 4 do begin
for i := 1 to 5 do begin
  Karte[i]

so wäre es wohl etwas besser
Delphi-Quellcode:
for j := 1 to 4 do begin
for i := 1 to 5 do begin
  Karte[(j - 1) * 5 + i]
oder 0-basierend
Delphi-Quellcode:
var karte : array [0..99] of TImage;

for j := 0 to 3 do begin
for i := 0 to 4 do begin
  Karte[j * 5 + i]

Sotov 20. Jan 2007 23:20

Re: Arrayelement anklicken
 
Hmm, ich weiss nicht was es geändert haben soll, denn es hat sich absolut nichts verändert!
Aber trotzdem vielen dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr.
Seite 1 von 3  1 23      

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