![]() |
Componentname in String umwandeln
Hi,
der Titel sagt schon alles. Ich wollte mit einen Label etwas machen. Dieses Label hat immer folgendes Schema: Headline_ExPanel1 Headline_ wird jedes Panel genannt. ExPanel1 ist das Panel auf welchen das Label liegt Da das Ganze variabl sein soll muss ich also den Namen des Senders heruafinden, in einen String umwandeln und ihn mit Headline_ verbinden. Mein Code sieht wie folgt aus:
Delphi-Quellcode:
Jetzt fehlt mir nur noch der Befehl um den Component-Name in einen String zu verwandeln ;-)
FindComponent('Headline_'+(Sender as TPanel).Name).caption:='blubb';
Hoffe ihr könnt mir helfen. |
Re: Componentname in String umwandeln
Hi,
ist TComponentName (also die Eigenschaft "Name") einer Komponente nicht kompatbiel zu string? Wär' mir jetzt neu.. mfG mirage228 |
Re: Componentname in String umwandeln
Hmm... das kann ich jetzt nicht festellen da mir "Undefinierter Bezeichner: FindComponent" gemeldet wird...
|
Re: Componentname in String umwandeln
Muss man nicht auch FindComponent mit as TLabel oder was auch immer verwenden?
|
Re: Componentname in String umwandeln
@Nicolai1605
Richtig! FindComponent liefert einen TComponent-Zeiger, der in den meisten Fällen mit einem TypeCast verwendet wird. @onlinehome FindComponent ist keine einfache Funktion sondern eine Methode von TComponent. Du mußt also die FindComponent-Methode des Label-Besitzers (also Owner, nicht Parent!) aufrufen. Meistens ist dies das Formular, auf dem das Label liegt. Gruß Hawkeye |
Re: Componentname in String umwandeln
Zitat:
|
Re: Componentname in String umwandeln
Delphi-Quellcode:
(FindComponent('Headline_'+(Sender as TPanel).Name) as TLabel).caption:='blubb';
|
Re: Componentname in String umwandeln
Zitat:
|
Re: Componentname in String umwandeln
Classes (da FindComponent eine Methode von TComponent und TComponent ist in Classes)
|
Re: Componentname in String umwandeln
Die habe ich eingebunden...
Also ich habs jetzt so gelöst:
Delphi-Quellcode:
Würde auch funktionieren wenn nicht "Undefinierter Bezeichner: Font" kommen würde...
(Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name).font.color:=clWhite;
Auch folgendes geht nicht:
Delphi-Quellcode:
(Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name as TLabel).font.color:=clWhite;
|
Re: Componentname in String umwandeln
Hi,
vielleicht so
Delphi-Quellcode:
?
TControl((Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name)).font.color:=clWhite;
mfG mirage228 |
Re: Componentname in String umwandeln
Geht meine Lösung wirklich nicht? Bei mir gehts :gruebel: (#7)
|
Re: Componentname in String umwandeln
Zitat:
Zitat:
|
Re: Componentname in String umwandeln
Du brauchst zunächst einmal den Zeiger auf das Panel:
Delphi-Quellcode:
Dann besorgst Du Dir den Zeiger auf das Label. Ich gehe hier einmal davon aus, daß sich das Label auf dem Formular mit dem Namen 'Form1' befindet:
myPanel := Sender AS TPanel;
Delphi-Quellcode:
Jetzt kannst Du auf das Label zugreifen:
myLabel := Form1.FindComponent('Headline_' + myPanel.Name) AS TLabel;
Delphi-Quellcode:
Die benötigten Variablen mußt Du natürlich noch deklarieren.
myLabel.Caption := 'blubb';
myLabel.Font.Color := clWhite; Gruß Hawkeye |
Re: Componentname in String umwandeln
Jetzt funktionierts. Vielen Dank :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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