![]() |
Dynamisch erstelltes Panel + Dynamisch erstelltes Image
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 :D
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; |
Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image
Grundsätzlich würde sowas auch dynamisch gehen, aber warum willst du es unbedingt?
Mach dir doch einfach ein Formular mit Panels an den gewünschen Panels und ordne diesen dann nur noch verschiedene Grafiken zu. |
Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image
Moin Deven...
Wenn du eine schnelle Antwort willst, dann mach es den leuten nicht so schwer. Niemand hat Lust sich in X Seiten Quellcode hineinzuversetzen. Ich habe mir auch nicht die Mühe gemacht alles zu lesen, geschweige nachzuvollziehen. Vielleicht hilft dir dies aber trotzdem weiter...
Delphi-Quellcode:
Bis denne...
procedure TForm1.Button1Click(Sender: TObject);
var MyPanel: TPanel; MyImage: TImage; begin MyPanel:=TPanel.Create(Form1); with MyPanel do begin width:=60; height:=60; top:=20; left:=20; parent:=Form1; end; MyImage:=TImage.Create(Form1); with MyImage do begin width:=40; height:=40; top:=10; left:=10; parent:=MyPanel; end; end; |
Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image
ah danke!
Das hilft mir schon sehr viel weiter ... Nur ein problem habe ich wenn ich die Images so dynamisch erstellen lasse, kann ich diesen nicht im gleichem Zug die Bilder zuordnen .. er sagt dann im Quellcode immer das es ein Undefinierter Bezeichner ist :( auch wenn ich Image1 erst mit findcomponent suchen lasse geht es nicht :( |
Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image
Moin Deven,
Zitat:
Zitat:
Auch den müsstest Du selber vergeben.
Code:
iNextImage ist einfach eine Zählvariable vom Typ integer in der der Zähler für die TImage Kompos verwaltet wird.
MyImage:=TImage.Create(Form1);
with MyImage do begin [color=red]Name := 'Image'+IntToStr(iNextImage); inc(iNextImage);[/color] width:=40; height:=40; top:=10; left:=10; [color=red]Picture.LoadFromFile(...);[/color] parent:=MyPanel; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr. |
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 by Thomas Breitkreuz