AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dynamisch erstelltes Panel + Dynamisch erstelltes Image
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisch erstelltes Panel + Dynamisch erstelltes Image

Ein Thema von Deven · begonnen am 25. Sep 2003 · letzter Beitrag vom 28. Sep 2003
Antwort Antwort
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
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#2

Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image

  Alt 25. Sep 2003, 22:24
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.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image

  Alt 26. Sep 2003, 09:31
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:
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;
Bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Deven

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

Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image

  Alt 28. Sep 2003, 17:52
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Dynamisch erstelltes Panel + Dynamisch erstelltes Image

  Alt 28. Sep 2003, 18:27
Moin Deven,

Zitat von Deven:
Nur ein problem habe ich
wenn ich die Images so dynamisch erstellen lasse,
kann ich diesen nicht im gleichem Zug die Bilder zuordnen ..
Was Tonic geschrieben hat kannst Du ja erweitern.

Zitat von Deven:
auch wenn ich Image1 erst mit findcomponent suchen lasse geht es nicht
Das liegt daran, das derart erzeugte Komponenten keinen Namen haben.
Auch den müsstest Du selber vergeben.


Code:
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;
iNextImage ist einfach eine Zählvariable vom Typ integer in der der Zähler für die TImage Kompos verwaltet wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz