Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mehrerere Objekte zur Laufzeit erstellen (https://www.delphipraxis.net/179320-mehrerere-objekte-zur-laufzeit-erstellen.html)

Luki206 26. Feb 2014 17:50

Mehrerere Objekte zur Laufzeit erstellen
 
Hi, ich weiß zwar wie ich z.B. Buttons zur Laufzeit erstelle aber weiß ich nicht wie ich mehr als nur ein Button erstellen kann. Mein Anliegen ist volgendes: jeder kennt ja die Musik Mediathek vom Win Mediaplayer oder von iTunes und so möchte ich das auch machen das man auch mehr Lieder in eine Album Zeile schreiben kann. Wüsste jemand wie ich das machen könnte? Weil da habe ich jetzt keine Anhung da ich Objekte noch nur zur Laufzeit erstellt habe.
Danke
Luki :)

DeddyH 26. Feb 2014 17:57

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Was denn für Objekte? Komponenten oder ganz andere? Im Prinzip geht das so (ich geh mal davon aus, dass es sich nicht um Komponenten handelt):
Delphi-Quellcode:
//FObjects soll ein privates Feld vom Typ TObjectList sein
procedure TSomeForm.CreateSeveralObjects(CountObjects: integer);
var
  i: integer;
  Obj: TSomeObject;
begin
  for i := 1 to CountObjects do
    begin
      Obj := TSomeObject.Create;
      //Irgendwelche Eigenschaften setzen
      Obj.SomeProp := 42;
      FObjects.Add(Obj);
    end;
end;
Wenn später die Objektliste freigegeben wird, werden (in der Standardeinstellung OwnsObjects auf true) auch die enthaltenen Objekte mit freigegeben.

michaelthuma 26. Feb 2014 18:17

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Ganz klar ist es mir nicht. Machen wir mal Ein Panel einfügen und mehrer Buttions drauf.

Delphi-Quellcode:
var
  lBtn : TButton;
  lPanel : TPanel;
  lActRight : Integer;
begin
  (* Panel *)
  lPanel := TPanel.Create(self);
  lPanel.Align:=TAlign.alBottom;
  self.InsertControl(lPanel);

  (*Button 1*)
  lBtn := TButton.Create(self);
  lBtn.Caption:='Eins';
  self.InsertControl(lBtn);
  lBtn.Parent:=lPanel;
  lActRight := lBtn.Left + lBtn.Width;
 
  (*Button 2*)
  lBtn:=TButton.Create(self);
  lBtn.Caption:='Zwei';
  lBtn.Left:=lActRight + 3;
  self.InsertControl(lBtn);
  lBtn.Parent:=lPanel;
  lActRight := lBtn.Left + lBtn.Width;
 
  (*Button 3*)
 
  lBtn:=TButton.Create(self);
  lBtn.Caption:='Zwei';
  lBtn.Left:=lActRight + 3;
  self.InsertControl(lBtn);
  lBtn.Parent:=lPanel;
end;
Das ist jetzt nicht der Heuler ... aber schauen wir mal. Kann man ruhig eine Schleife bauen ... nach dem Panel.


Zitat:

Zitat von Luki206 (Beitrag 1249746)
Hi, ich weiß zwar wie ich z.B. Buttons zur Laufzeit erstelle aber weiß ich nicht wie ich mehr als nur ein Button erstellen kann. Mein Anliegen ist volgendes: jeder kennt ja die Musik Mediathek vom Win Mediaplayer oder von iTunes und so möchte ich das auch machen das man auch mehr Lieder in eine Album Zeile schreiben kann. Wüsste jemand wie ich das machen könnte? Weil da habe ich jetzt keine Anhung da ich Objekte noch nur zur Laufzeit erstellt habe.
Danke
Luki :)


Popov 26. Feb 2014 18:27

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Zitat:

Zitat von DeddyH (Beitrag 1249748)
Wenn später die Objektliste freigegeben wird, werden (in der Standardeinstellung OwnsObjects auf true) auch die enthaltenen Objekte mit freigegeben.

Je nachdem welches Delphi man hat, ist die Eigenschaft OwnsObjects nicht sonderlich verbreitet. Bei Delphi 7 ist es gerade mal nur in TObjectList, spätere Versionen wurden aktualisiert, z. B. TStringList usw.

Ist nur ein Hinweis für die, die noch ein altes Delphi haben. Da TE aber XE5 hat, sollte das kein Problem sein.

Luki206 27. Feb 2014 10:09

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Ok danke, nur die Oberfläche vom Windows Media Player ist ja Scrollbar (nicht Scrollbar sondern Scroll-bar ;) ) und jetzt weiß ich nicht wie ich das dann mit den Scrollbar's machen soll das diese mein Fenster nach untenraus erweitern, weil wenn man ja mehr als Zehn mal: Button, Label und Bevel dann erzeugt hat kommt man ja an ein Limit. Oder ja auch noch ein Beispiel von iTunes. Apple hat ja das Coverflow zu dieser neuen Ansicht getauscht und das ist ja auch 'erweiterbar' mit Lieder.
Danke
Luki :)

Sir Rufo 27. Feb 2014 11:19

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Wenn du das nicht vernünftig beschreiben kannst, dann mach einen Screenshot, kringel das ein was du meinst und schreib "das da" dran

Perlsau 27. Feb 2014 11:36

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Luki206:

Wenn ich dich richtig verstehe, möchtest du das erreichen, was ich im Bild unten darstelle. In der zugehörigen Anwendung werden Objekte zusammengestellt (ein TImage und eine TCheckBox) und jeweils als ein zusammengehöriges Objekt zur Laufzeit erzeugt. Dazu habe ich mir eine eigene Klasse geschrieben, die die Objekte erzeugen und auch wieder freigeben kann. Die Objekte landen nach Erzeugung in einer TObjectList.

In der ScrollBox befindet sich ein TPanel, das in der Breite jeweils der Breite des ScrollBox-Clientbereichs angepaßt wird. Die Höhe richtet sich danach, wie viele Objekte auf dem Panel dargestellt werden sollen. Dabei berechne ich aus der Breite und Höhe der Objekte und aus dem horizontalen und vertikalen Abstand, wie viele Objekte auf eine "Zeile" passen und wie viele "Zeilen" ich benötige. Aus dem letztgenannten Wert ergibt sich die Höhe des Panels.

Luki206 27. Feb 2014 13:48

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Tut mir leid wegen den spärlichen Infos nur war ich heute morgen in der Schule etwas verpeilt :mrgreen: @Perlsau Ja genau so etwas meine ich Danke :) ;)

Perlsau 27. Feb 2014 13:50

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Na, dann komm doch mal auf die helle Seite, dann siehst du erstens besser und blickst auch besser durch. Immerhin, jetzt weißt du ja, wie's geht.

Luki206 27. Feb 2014 14:14

AW: Mehrerere Objekte zur Laufzeit erstellen
 
Haha, ja ok, danke :D ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Seite 1 von 3  1 23      

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