AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls property vom Typ string mit dem Komponentennamen vorbelegen

property vom Typ string mit dem Komponentennamen vorbelegen

Ein Thema von Poolspieler · begonnen am 18. Mär 2013 · letzter Beitrag vom 19. Mär 2013
Antwort Antwort
Poolspieler

Registriert seit: 9. Aug 2004
156 Beiträge
 
Delphi XE7 Professional
 
#1

property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 18. Mär 2013, 22:28
Hallo,
ich entwickle gerade eine neue Komponente und würde gerne eine property vom Typ string mit dem Komponentennamen vorbelegen.
Also genau wie bei z.B. TLabel:
Wenn man ein neues Label auf einer Form platziert, dann erhält die caption des Labels automatisch den selben Text, wie der Name des Labels --> z.B. label123

WIE wird das gemacht?
Im Konstruktor der Komponente ist der Name der Komponente noch leer.
Wann bzw. in welchem Ereignis wird der Caption eines Labels Ihr Text zugewiesen, wenn diese auf der Form zur Designzeit platziert wird?
Ich habe nun schon viel hier gesucht, gegoogelt und einige Bücher um Rat gefragt - leider ohne Ergebnis.

Falls es wichtig ist:
Ich leite meine neue Komponente von TCustomPanel ab.

Code:
constructor TEingabe.Create(AOwner: TComponent);
begin
  inherited;
...
  FBeschriftung := Self.Name; // Self.Name ist aber leider LEER --> wenn ich zu Testzwecken Self.Name über ein OnClick-Ereignis per showmessage() ausgebe, dann steht da der korrekte Name drin --> WANN wird Self.Name beschrieben???
...
end;

Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
6.348 Beiträge
 
Delphi XE4 Professional
 
#2

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 18. Mär 2013, 22:34
Hallo,

schau dir mal Loaded an.


Heiko
Heiko
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
156 Beiträge
 
Delphi XE7 Professional
 
#3

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 18. Mär 2013, 22:56
Hallo,
danke für Deine Antwort!

Es ist schon mal ein sehr guter Hinweis gewesen - aber wohl noch nicht ganz die Lösung.

Ich habe mal weiter in die Richtung gesucht und TComponent.SetName gefunden.
Ich habe es auch gleich ausprobiert - und es hat damit funktioniert!

Danke nochmal - da wäre ich ohne Deinen Denkanstoß NIE drauf gekommen!



Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.705 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 19. Mär 2013, 07:17
Ich hätte jetzt eher an
ControlStyle := ControlStyle + [csSetCaption]; gedacht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
156 Beiträge
 
Delphi XE7 Professional
 
#5

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 19. Mär 2013, 10:51
Hallo DeddyH,
vielen Dank für die Info, ControlStyle ist wirklich interessant.
Für meinen Fall passt es zwar nicht, weil ich das Feld "Beschreibung" und nicht "Caption" genannt habe.

Frage nebenbei:
Woher kennst Du diese Eigenschaft --> steht sowas in irgend einem TUT oder HOWTO?
Ich habe wirklich viel zu diesem Thema gesucht, aber definitiv nirgends einen Hinweis auf diese Eigenschaft gelesen.
Auch im Grundlagenbuch und im Kochbuch von Doberenz und Kowalski steht davon nichts.
Oder sind das einfach Erfahrungswerte, die Du irgendwo (mehr oder minder zufällig) gesammelt hast?

Viele Grüße,

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.705 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 19. Mär 2013, 10:57
Ich hatte vor Jahren einmal dasselbe Problem. Wie ich dann aber letztendlich auf TControlStyle gekommen bin, weiß ich nicht mehr, möglicherweise in anderen Komponenten gespickt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: property vom Typ string mit dem Komponentennamen vorbelegen

  Alt 19. Mär 2013, 12:43
Man schaut einfach mal nach, wo/wie die Eigenschaft Name gesetzt wird und stößt dann auf TControl.SetName
Delphi-Quellcode:
procedure TControl.SetName(const Value: TComponentName);
var
  ChangeText: Boolean;
begin
  ChangeText := (csSetCaption in ControlStyle) and
    not (csLoading in ComponentState) and (Name = Text) and
    ((Owner = nil) or not (Owner is TControl) or
    not (csLoading in TControl(Owner).ComponentState));
  inherited SetName(Value);
  if ChangeText then Text := Value;
end;
BTW: Du kannst diese Methode in deiner Klasse auch überschreiben und dann ebenfalls deine Eigenschaft Beschreibung damit setzen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf