Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Componentname in String umwandeln (https://www.delphipraxis.net/66444-componentname-string-umwandeln.html)

Andreas L. 29. Mär 2006 19:25


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:
FindComponent('Headline_'+(Sender as TPanel).Name).caption:='blubb';
Jetzt fehlt mir nur noch der Befehl um den Component-Name in einen String zu verwandeln ;-)

Hoffe ihr könnt mir helfen.

mirage228 29. Mär 2006 19:34

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

Andreas L. 29. Mär 2006 19:43

Re: Componentname in String umwandeln
 
Hmm... das kann ich jetzt nicht festellen da mir "Undefinierter Bezeichner: FindComponent" gemeldet wird...

Nicolai1234 29. Mär 2006 20:25

Re: Componentname in String umwandeln
 
Muss man nicht auch FindComponent mit as TLabel oder was auch immer verwenden?

Hawkeye219 29. Mär 2006 20:39

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

Andreas L. 30. Mär 2006 16:54

Re: Componentname in String umwandeln
 
Zitat:

Zitat von Hawkeye219
@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

Und wie geht das?

Kinimod8 30. Mär 2006 17:11

Re: Componentname in String umwandeln
 
Delphi-Quellcode:
(FindComponent('Headline_'+(Sender as TPanel).Name) as TLabel).caption:='blubb';

Andreas L. 30. Mär 2006 17:14

Re: Componentname in String umwandeln
 
Zitat:

[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'FindComponent'
Welche Units brauche ich denn? In der Delphi-Hilfe steht davon nichts...

Die Muhkuh 30. Mär 2006 17:16

Re: Componentname in String umwandeln
 
Classes (da FindComponent eine Methode von TComponent und TComponent ist in Classes)

Andreas L. 30. Mär 2006 17:28

Re: Componentname in String umwandeln
 
Die habe ich eingebunden...

Also ich habs jetzt so gelöst:
Delphi-Quellcode:
(Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name).font.color:=clWhite;
Würde auch funktionieren wenn nicht "Undefinierter Bezeichner: Font" kommen würde...

Auch folgendes geht nicht:

Delphi-Quellcode:
(Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name as TLabel).font.color:=clWhite;

mirage228 30. Mär 2006 17:30

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

Kinimod8 30. Mär 2006 17:34

Re: Componentname in String umwandeln
 
Geht meine Lösung wirklich nicht? Bei mir gehts :gruebel: (#7)

Andreas L. 30. Mär 2006 17:34

Re: Componentname in String umwandeln
 
Zitat:

Zitat von mirage228
Hi,

vielleicht so
Delphi-Quellcode:
TControl((Sender as TPanel).FindComponent('Headline_'+(Sender as TPanel).Name)).font.color:=clWhite;
?

mfG
mirage228

Dann kommt auch
Zitat:

[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'font'
Wie schaffe ich es nur die Farbe des Label zu ändern.......

Hawkeye219 30. Mär 2006 17:37

Re: Componentname in String umwandeln
 
Du brauchst zunächst einmal den Zeiger auf das Panel:
Delphi-Quellcode:
myPanel := Sender AS TPanel;
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:
Delphi-Quellcode:
myLabel := Form1.FindComponent('Headline_' + myPanel.Name) AS TLabel;
Jetzt kannst Du auf das Label zugreifen:
Delphi-Quellcode:
myLabel.Caption := 'blubb';
myLabel.Font.Color := clWhite;
Die benötigten Variablen mußt Du natürlich noch deklarieren.

Gruß Hawkeye

Andreas L. 30. Mär 2006 19:08

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