![]() |
Probleme bei der dynamischen Erzeugung mehrere Komponenten
Hallo an alle DPler,
Ich möchte meinen Programmcode etwas kürzen, deswegen wollte ich die Erstellen mehrere gleicher Labels für einen Status zusammen fassen. Zur Zeit sieht es wie folgt aus: Ich definiere mir in meiner Klasse mehrere Labels, wobei 2 Labels immer zusammen gehören (Bsp.: LblGeschwindigkeit und LblGeschwindigkeitAnzeige). In dem einen Label soll der Text 'Geschwindigkeit:' drinn stehen und in dem anderen die dementsprechende Zahl + 'km/h'. Ich habe folgende Prozeduren schon geschrieben und die einzelne Initialisierung funktioniert auch:
Delphi-Quellcode:
Möchte jetzt die namensähnlichen Labels möglichst über eine procedure oder function mit einem Aufruf initialisieren und habe es so versucht:
function TContainer.CreateLabel(PosX, PosY, Textgroesse: integer; Text: string): TLabel;
begin result := TLabel.Create(Self); result.Parent := Self; result.Left := PosX; result.Top := PosY; result.Caption := Text; result.Font.Height := Textgroesse; end; ... procedure TContainer.CreateWnd; begin inherited createWnd; // Labelinitialisierungen LblGeschwindigkeit := CreateLabel(100, 100, 14, 'Geschwindigkeit:'); LblGeschwindigkeitAnzeige := CreateLabel(150, 100, 14, '100 km/h'); ... // weitere Erzeugung mehrerer Komponenten end;
Delphi-Quellcode:
Leider kommte es bei beiden Varianten zur Fehlermeldung, dass der linken seite das so nicht zugeordnet werden kann. Weiterhin erschließt sich aus der Logic, dass die Labels zum Ansprechzeitpunkt an sich noch gar nicht existieren, da ich sie ja erst erschaffen möchte. Kann mir jemand sagen, wie ich diese RICHTIG ansprechen kann oder vieleicht ob es eine bessere Methode gibt soetwas zu erstellen.
procedure TContainer.CreateStatusLabel(PosX: Integer; PosY: Integer; Textgroesse: Integer; Name: string; Text: string);
begin Findcomponent(Name) := CreateLabel(PosX, PosY, Textgroesse, Text); FindComponent(Name+'Anzeige') := CreateLabel(PosX + 105, PosY, Textgroesse, ''); end; // Habe auch schon folgende Abwandlung versucht procedure TContainer.CreateStatusLabel(PosX: Integer; PosY: Integer; Textgroesse: Integer; Name: string; Text: string); begin TLabel(Findcomponent(Name)) := CreateLabel(PosX, PosY, Textgroesse, Text); TLabel(FindComponent(Name+'Anzeige')) := CreateLabel(PosX + 105, PosY, Textgroesse, ''); end; Ps.: Ich habe erstmal 2 Labels erstellt, weil sich die gleichmäßige Ausrichtung erstmal einfacher zu erreichen ist. Vielen Dank BAMatze |
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Warum FindComponent?
|
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Bei FindComponent bin ich mir ja nicht sicher, weil wie gesagt, die Komponente noch gar nicht existiert. Leider kenne ich auch keine andere Funktion oder Möglichkeit eine Komponente bei ihrem Variablennamen anzusprechen und hier habe ich auch noch nichts passendes gefunden.
|
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Delphi-Quellcode:
procedure TContainer.CreateStatusLabel(PosX: Integer; PosY: Integer; Textgroesse: Integer; Name: string; Text: string);
begin CreateLabel(PosX, PosY, Textgroesse, Text); CreateLabel(PosX + 105, PosY, Textgroesse, ''); end; |
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Zitat:
|
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Nein, es wird jeweils eine neu Instanz von TLabel erzeugt und zurückgegeben, da ich den Rückgabewert nicht verwende wird er halt nirgends zugewiesen.
|
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Und kann ich dies auch den beiden Labeln irgendwie zuordnen, da ich ja aufgrund der Lesbarkeit des Programmes die aussagekräftigen LabelNamen verwenden möchte und nicht die dann warscheinlich entstehenden Notationen Label1 und Label2. Muss auch mehrfach auf zumindest das 2. Label zugreifen, da sich dieses ja ändert.
Oder geht dies dann nur oder einfacher über ein Array oder TList? |
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Das würde ich dann über einen Array oder besser einet TObjectList machen
|
Re: Probleme bei der dynamischen Erzeugung mehrere Komponent
Ok danke dir, schaue ich mal danach.
BAMatze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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