Einzelnen Beitrag anzeigen

Kn1bbl

Registriert seit: 23. Nov 2003
9 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Wie kann ich auf Komponenten zugreifen,deren Index varia

  Alt 7. Feb 2005, 17:21
So, ich habe jetzt deinen Tipp beachtet und es klappt damit auch soweit.

Code:
procedure TForm1.ImageClick(Sender: TObject);
begin
  if actualPlayer = 2 then
    Player2Draw
  else
  begin
    if Sender = Feld1 then
      DrawSymbol(Feld1)
   else if Sender = Feld2 then
     DrawSymbol(Feld2)
   else if Sender = Feld3 then
     DrawSymbol(Feld3)
   else if Sender = Feld4 then
     DrawSymbol(Feld4)
   else if Sender = Feld5 then
     DrawSymbol(Feld5)
   else if Sender = Feld6 then
     DrawSymbol(Feld6)
   else if Sender = Feld7 then
     DrawSymbol(Feld7)
   else if Sender = Feld8 then
     DrawSymbol(Feld8)
   else if Sender = Feld9 then
     DrawSymbol(Feld9);
   end;

  if actualPlayer = 1 then
    actualPlayer := 2
  else if actualPlayer = 2 then
    actualPlayer := 1;
end;

procedure TForm1.Player2Draw;
var randomfield: integer;
begin
  randomize;
  repeat
    randomfield := random(8) + 1;
  until(fields[randomfield] = 0);

  DrawSymbol(Feld+randomfield);
end;

procedure TForm1.DrawSymbol(imageSender: TObject);
begin
  TImage(imageSender).Canvas.Pen.Width := 5;

  if(fields[TImage(imageSender).Tag] = 0) then
  begin
    if actualPlayer = 1 then
    begin
      TImage(imageSender).Canvas.Pen.Color := clRed;
      TImage(imageSender).Canvas.MoveTo(0, 0);
      TImage(imageSender).Canvas.LineTo(TImage(imageSender).Width, TImage(imageSender).Height);
      TImage(imageSender).Canvas.MoveTo(TImage(imageSender).Width, 0);
      TImage(imageSender).Canvas.LineTo(0, TImage(imageSender).Height);
    end
    else
    begin
      TImage(imageSender).Canvas.Pen.Color := clBlue;
      TImage(imageSender).Canvas.Ellipse(5, 5, (TImage(imageSender).Width - 5), (TImage(imageSender).Height - 5));
    end;
    fields[TImage(imageSender).Tag] := actualPlayer;
  end
  else
    showmessage('Dieses Feld ist bereits gesetzt');
end;
Nun ist mein Problem dass clickImage alles weitergibt wie es soll und die Procedure DrawSymbol auch alles dann richtig ausführt.

Allerdings will ich nun in der Proce Player2Draw per Zufall bestimmen lassen, in welches Feld er zeichnen soll. Wie kann ich das dann an die DrawSymbol übergeben? mit 'DrawSymbol(Feld+randomfield);' geht es nicht.
  Mit Zitat antworten Zitat