Einzelnen Beitrag anzeigen

Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: eine Liste oder ein Array von Komponenten

  Alt 29. Jul 2003, 21:45
Ich kann dir da leider nicht viel weiterhelfen =(

Aber ich kann ja mal erzählen, wie's mir ging:

Ich wollte zur Laufzeit ein Array von 32 TGraphicControl-Abkömmlingen erzeugen, die ein Kartenspiel darstellen sollten.

Compiliert wurde die Sache einwandfrei und lief auch ohne Fehler an, es gab nur ein Problem:

Die Komponenten wurden nicht angezeigt

Ich hatte/habe nicht die geringste Ahnung, wo der Fehler lag...
Vielleicht brauchen graphische Elemente eine Sonderbehandlung??

Ich sehe eigentlich nichts, was dagegen spräche, ein Array für solche Aufgaben zu verwenden!

Delphi-Quellcode:

...

var
  Form1: TForm1;
  CardDeck: array[0..31] of TCard;


procedure InitCardDeck;
var i: Integer;
begin
Randomize;
//Kreuz erzeugen
  for i:=0 to 7 do
   begin
    CardDeck[i]:= TCard.Create(Form1);
    CardDeck[i].SetCardSuit(Kreuz);
    CardDeck[i].SetCardValue(IntToSkatCardVal(i));
    CardDeck[i].Left:= 20 + (i* 10);
    CardDeck[i].Top := 20;
    CardDeck[i].ShowCard:= true;
   end;
//Pik erzeugen
  for i:=8 to 15 do
   begin
    CardDeck[i]:= TCard.Create(Form1);
    CardDeck[i].SetCardSuit(Pik);
    CardDeck[i].SetCardValue(IntToSkatCardVal(i-8));
    CardDeck[i].Left:= 20 + (i* 10);
    CardDeck[i].Top := 40 + DEFAULT_CARD_HEIGHT;
    CardDeck[i].ShowCard:= true;
   end;
//Herz erzeugen
  for i:=16 to 23 do
   begin
    CardDeck[i]:= TCard.Create(Form1);
    CardDeck[i].SetCardSuit(Herz);
    CardDeck[i].SetCardValue(IntToSkatCardVal(i-16));
    CardDeck[i].Left:= 20 + (i* 10);
    CardDeck[i].Top := 60 + DEFAULT_CARD_HEIGHT;
    CardDeck[i].ShowCard:= true;
   end;
//Karo erzeugen
  for i:=24 to 31 do
   begin
    CardDeck[i]:= TCard.Create(Form1);
    CardDeck[i].SetCardSuit(Karo);
    CardDeck[i].SetCardValue(IntToSkatCardVal(i-24));
    CardDeck[i].Left:= 20 + (i* 10);
    CardDeck[i].Top := 80 + DEFAULT_CARD_HEIGHT;
    CardDeck[i].ShowCard:= true;
   end;
end;
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat