Einzelnen Beitrag anzeigen

Deven

Registriert seit: 27. Jun 2003
49 Beiträge
 
Delphi 7 Enterprise
 
#1

Dynamisch erstelltes Panel + Dynamisch erstelltes Image

  Alt 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;
  Mit Zitat antworten Zitat