![]() |
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 :) |
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:
Wenn später die Objektliste freigegeben wird, werden (in der Standardeinstellung OwnsObjects auf true) auch die enthaltenen Objekte mit freigegeben.
//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; |
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:
Das ist jetzt nicht der Heuler ... aber schauen wir mal. Kann man ruhig eine Schleife bauen ... nach dem Panel.
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; Zitat:
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Zitat:
Ist nur ein Hinweis für die, die noch ein altes Delphi haben. Da TE aber XE5 hat, sollte das kein Problem sein. |
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 :) |
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
|
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. |
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 :) ;)
|
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.
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Haha, ja ok, danke :D ;)
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Wie bekomme ich bei der ScrollBox diesen nach innen Wölb Effekt weg? Mit fällt gerade der Name nicht ein aber mit BevelInner, -Outer und -Kind bekomme ich ihn nicht weg. Alles steht auf none
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Was für' n Effekt? Zeig mal einen Screenshot.
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Den:
Also wie mit dem Panel der Effekt und der stört mich.. |
AW: Mehrerere Objekte zur Laufzeit erstellen
BorderStyle auf bsNone hilft nicht?
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Doch! Danke ;)
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Ok nochmal ein Problem. Ich kann kein TImage erzeugen bzw. es kommt nach TImage. keine Auswahlhilfe.. hier mein Code bis jetzt:
Delphi-Quellcode:
Edit: Halt, Fehler gefunden.. TObjectList wird mir als unbekannt angezeigt, muss ich noch was zu uses hinzufügen?
procedure TFrmHaupt.BtnObjektClick(Sender: TObject);
var LImg: TImage; LLbl: TLabel; begin Limg := TImage. end; |
AW: Mehrerere Objekte zur Laufzeit erstellen
Contnrs
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Ok danke ;)
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Zitat:
Dein hier gezeigter Code hat überhaupt nichts mit einer Objektliste zu tun ?!? |
AW: Mehrerere Objekte zur Laufzeit erstellen
Nur komisch, dass ich es
![]() |
AW: Mehrerere Objekte zur Laufzeit erstellen
Was ist daran komisch: du fügst das erzeugte Objekt einer nicht lokal deklarierten Objektliste hinzu. Davon ist im Code oben aber nichts zu sehen.
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Klar, weil er bislang erst den gezeigten Code getippt und sich gewundert hat, dass die Codevervollständigung nicht funktioniert. Das steht doch so in der Frage.
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Ja, das war auch nur ein kleiner Test ;) Nochmal zu meiner Idee: Ich habe mir jetzt auch gedacht einfach nur vier Panels mit Labels und einem Button zu füllen und noch eine Scrollbar auf mein Formular setzte die dann bei jedem scrolllen dann die Caption's der Labels entweder ein Panel nach unten schiebt oder eins nach oben. Das mit der Scrollbar ist aber auch nur so wenn man mehr als vier Lieder verlinkt hatte sollte diese dann erscheinen. Ist das gut oder soll ich's mit den Objekten versuchen die zur Laufzeit zu erstellen? ;)
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Ich persönlich kann mir überhaupt nicht vorstellen, wie das letztendlich aussehen soll. Du scrollst und die Beschriftungen ändern sich dynamisch? Zum Einen ist der Scrollbalken dann immer geich hoch, egal wieviele Daten Du verwalten willst und zum Anderen stelle ich mir gerade diese Verwaltung sehr umständlich vor. Da würde ich eher beim dynamischen Erzeugen bleiben, aber das ist nur meine persönliche Meinung.
|
AW: Mehrerere Objekte zur Laufzeit erstellen
Ok, nur ich habe jetzt einen anderen weg gefunden ;)ich lade mal das 'fertige' Projekt hoch wenn ich's dann schlicht weg zum laufen gebracht habe :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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-2025 by Thomas Breitkreuz