Registriert seit: 27. Jun 2003
49 Beiträge
Delphi 7 Enterprise
|
Dynamisch erstelltes Panel + Dynamisch erstelltes Image
25. Sep 2003, 21:05
Hallo
Ich habe wieder ein Problem!
Ich lasse im folgenden Source eine bestimmte anzahl von Panels dynamisch erstellen.
Da diese Panels als meine Memory-Karten dienen sollen, möchte ich auf diesen nun auch dynamisch images erstellen und das am besten direkt in einer Funktion... soll heissen
Erstelle ein Panel mit dem namen Panel1 und dann erstelle in diesem Panel1 ein Image mit dem Namen Image1
Allerdings weiss ich nicht so recht wie ich das machen muss/kann...
Als zusatz würde jetzt noch kommen das er immer Zwei Panels zufällig 2 gleiche bilder gibt, diese Bilder aber nur maximal 2 mal vergibt...
Kann mir jemand helfen?
Gruss Deven
Delphi-Quellcode:
//Menü Neu-Button (Neue Karte geben)
procedure TForm1.Neu1Click(Sender: TObject);
var
i,links,oben,breite,hoehe,verschiebung: Integer;
C: TComponent;
const
NamePrefix = 'Panel';
NamePrefix2 = 'Image';
begin
Form2.showmodal; // Ruft die zweite form auf
if form2.Button1.Tag = 1 then
begin
for I := 1 to 64 do
begin
C := Self.FindComponent('Panel' + IntToStr(I)); // Sucht die Komponenten
if (C <> nil) then
FreeAndNil(C); // Gibt die gefunden Panels frei und setzt sie auf nil
// nil bedeutet soetwas wie null, bzw. nicht vorhanden
end;
end;
x := Form2.ComboBox1.ItemIndex; // der ItemIndex aus der ComboBox der Form2
// gibt hier an die Case den gewünschten Fall
// weiter
Case x Of
1: begin //4 Karten
links :=10;
oben :=10;
breite :=120;
hoehe :=120;
verschiebung :=130;
for i := 1 to 4 do begin
TPanel.Create(Self).Name := NamePrefix + IntToStr(i);
(das war mein versuch den Image in den Panel zu machen)
TImage.Create(TPanel(i)).Name := NamePrefix2 + IntToStr(i);
with TPanel(FindComponent(NamePrefix + IntToStr(i))) do
begin
SetBounds(links, oben, breite, hoehe); //setzt Left, Top, Width, Height
Inc(oben,verschiebung); // Erhöht "oben" um "verschiebung"
if i = 2 then
begin
Inc(links,verschiebung);
oben := 10;
end;
Parent := self;
end;
end;
end;
2: begin //16 Karten
links :=10;
oben :=10;
breite :=120;
hoehe :=120;
verschiebung :=130;
for i := 1 to 16 do begin
TPanel.Create(Self).Name := NamePrefix + IntToStr(i);
with TPanel(FindComponent(NamePrefix + IntToStr(i))) do
begin
SetBounds(links, oben, breite, hoehe); //setzt Left, Top, Width, Height
Inc(oben,verschiebung); // Erhöht "oben" um "verschiebung"
Case i Of
4: begin
Inc(links,verschiebung);
oben := 10;
end;
8: begin
Inc(links,verschiebung);
oben := 10;
end;
12: begin
Inc(links,verschiebung);
oben := 10;
end;
16: begin
Inc(links,verschiebung);
oben := 10;
end;
end;
Parent := self;
end;
end;
end;
3: begin //36 Karten
links :=10;
oben :=10;
breite :=120;
hoehe :=120;
verschiebung :=130;
for i := 1 to 36 do begin
TPanel.Create(Self).Name := NamePrefix + IntToStr(i);
with TPanel(FindComponent(NamePrefix + IntToStr(i))) do
begin
SetBounds(links, oben, breite, hoehe); //setzt Left, Top, Width, Height
Inc(oben,verschiebung); // Erhöht "oben" um "verschiebung"
Case i Of
6: begin
Inc(links,verschiebung);
oben := 10;
end;
12: begin
Inc(links,verschiebung);
oben := 10;
end;
18: begin
Inc(links,verschiebung);
oben := 10;
end;
24: begin
Inc(links,verschiebung);
oben := 10;
end;
30: begin
Inc(links,verschiebung);
oben := 10;
end;
36: begin
Inc(links,verschiebung);
oben := 10;
end;
end;
Parent := self;
end;
end;
end;
4: begin //64 Karten
links :=10;
oben :=10;
breite :=95;
hoehe :=95;
verschiebung:=105;
for i := 1 to 64 do begin
TPanel.Create(Self).Name := NamePrefix + IntToStr(i);
with TPanel(FindComponent(NamePrefix + IntToStr(i))) do
begin
SetBounds(links, oben, breite, hoehe); // setzt Left, Top, Width, Height in
// einem rutsch
Inc(oben,verschiebung); // Erhöht "oben" um "verschiebung"
Case i Of
8: begin
Inc(links,verschiebung);
oben := 10;
end;
16: begin
Inc(links,verschiebung);
oben := 10;
end;
24: begin
Inc(links,verschiebung);
oben := 10;
end;
32: begin
Inc(links,verschiebung);
oben := 10;
end;
40: begin
Inc(links,verschiebung);
oben := 10;
end;
48: begin
Inc(links,verschiebung);
oben := 10;
end;
56: begin
Inc(links,verschiebung);
oben := 10;
end;
64: begin
Inc(links,verschiebung);
oben := 10;
end;
end;
Parent := self;
end;
end;
end;
end;
end;
|