AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Edit.Text Initialisierung unterbinden

Ein Thema von idefix2 · begonnen am 17. Jul 2015 · letzter Beitrag vom 17. Jul 2015
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 05:30
Hallo,
ich bin dabei, mir einige Komponenten abzuleiten und mit zusätzlichen Eigenschaften zu versehen. Ein Detail, das mich immer schon irritiert hat, ist die völlig sinnlose automatische Initialisierung der Text-Property von Komponenten mit ihrem Namen - die man praktisch immer manuell löschen muss (mir fällt nichts ein, wo das Sinn machen könnte).

Ich habe jetzt im Quellcode von TEdit die ganze Genealogie hinauf bis zu TControl gesucht, wo diese Zuweisung passiert, und ich finde es nicht. Ganz offensichtlich passiert es nicht im Create, denn die Zuweisung Text:='' im Oncreate meiner Komponente (nach dem Inherited) bleibt wirkungslos, obwohl der Code durchlaufen wird, wenn ich eine neue Komponente auf meine Form setze (Kontrollausgabe wird angezeigt) - nach dem Einfügen der Komponente in die Form steht im Textfeld trotzdem der Komponentenname.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 06:08
Ich hab mal kurz in die Delphi Quellcodes geschaut, denke das hier wird das sein das du gesucht hast:

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;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 06:48
Danke, das war es.
Jetzt, wo du mich mit der Nase darauf gestossen hast, frage ich mich, warum ich es nicht selbst gefunden habe.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 14:42
Was muss man ändern?
if ChangeText then Text := ''; ist leider nicht zielführend...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 14:50
Würde es nicht genügen, csSetCaption aus dem ControlStyle zu entfernen?
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
 
#6

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 14:55
Würde es nicht genügen, csSetCaption aus dem ControlStyle zu entfernen?
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
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 22:55
Hmm, an die Möglichkeit habe ich gar nicht gedacht, das wäre wahrscheinlich sogar die bessere Lösung - auf Grund der Bezeichnung kann man ja hoffen, dass das keine unerwünschten Nebeneffekte mit sich bringt (ich habe ein tief sitzendes Mißtrauen dagegen, Dinge zu ändern, bei denen ich nicht ganz sicher bin, dass es keine Kollateralschäden gibt, aber in dem Fall ist das Mißtrauen höchtwahrscheinlich nicht gerechtfertigt).

Ich habe die Routine überschrieben:
Delphi-Quellcode:
procedure TfdEdit.SetName(const Value: TComponentName);
var oldtext: string;
begin
oldtext:=text;
inherited;
text:=oldtext;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 22:58
Da genügt ein Blick in die Hilfe zu TControl.ControlStyle.
Delphi-Quellcode:
constructor TfdEdit.Create(AOwner: TComponent);
begin
  inherited;
  ControlStyle := ControlStyle - [csSetCaption];
end;
Das sollte es gewesen sein.
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
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Edit.Text Initialisierung unterbinden

  Alt 17. Jul 2015, 23:12
Jep. Hab das inzwischen auch so geändert. Und dann gleich wieder die IDE mit dem Task Manager abgewürgt, weil ich vergessen habe, dass die das ohne Neustart nicht mag.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz