AGB  ·  Datenschutz  ·  Impressum  







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

TEdit Text "überschreiben"

Ein Thema von LoL · begonnen am 21. Jun 2005 · letzter Beitrag vom 22. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
LoL
(Gast)

n/a Beiträge
 
#1

TEdit Text "überschreiben"

  Alt 21. Jun 2005, 15:11
moin

Kann man nur die Read-Eigenschaft Text von einem TEdit überschreiben, wenn man sich eine Komponente von TEdit ableitet?

Delphi-Quellcode:
type
  TTemperatureEdit = class(TEdit)
  private
    { Private declarations }
    procedure SetText(Value : String);
    function ReadText : String;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property Text : String Read ReadText Write SetText;
  end;

procedure Register;

implementation

procedure TTemperatureEdit.SetText(Value : String);
begin
  inherited Text := Value;
end;

function TTemperatureEdit.ReadText : String;
begin
  Result := 'mein text';
end;

end.
habs so probiert bekomme aber einen Stackoverflow.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 15:16
Zitat von LoL:
habs so probiert bekomme aber einen Stackoverflow.
Weil du in eriner Setterroutine die Property änderst.

Versuch mal, die Getter-proc GetText oder so zu überschreiben ...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 15:16
Hai LoL,

durch dein
Delphi-Quellcode:
procedure TTemperatureEdit.SetText(Value : String);
begin
  inherited Text := Value;
end;
rufst Du deine Setter-Methode (SetText) ja immer wieder selber auf.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#4

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 15:29
Erstmal vielen dank für eure schnelle Antwort

Folgendes:

@sharky: Wie muss ich das dann schreiben das die Write procedure die geerbten Sachen ausführt? ich dachte das geht mit inherited

@jfheins: Ich hab probiert die Function GetText zu überschreiben=> not found in base class. In der Beschreibung von GetText steht auch drin das diese Protected ist. Kann man sie trotzdem irgend überschreiben?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 15:45
Hai LoL,

was genau möchtest Du denn machen?

Wenn Du immer den selben String beim lesen von .Text haben möchtest brauchst Du überhaupt keinen Setter zu schreiben.
Dann reicht auch das

Delphi-Quellcode:
type
  TTemperatureEdit = class(TEdit)
  private
    { Private declarations }
    function ReadText : String;
  protected
    { Protected declarations } 
  public
    { Public declarations } 
  published
    { Published declarations }
    property Text : String Read ReadText;
  end;

implementation


function TTemperatureEdit.ReadText : String;
begin
  Result := 'mein text';
end;
Aber das dir das bringen soll kann ich nicht erkennen
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 16:04
Ähm Sharky...
Du versteckst dort Control.Text.
D.h: diese Klasse wird sich nicht so verhalten wie es der Nutzer erwarten würde.
TEdit(DeinEdit).Text wird ohne die Logik aus deinem Setter sein... (Es würde Text von TControl nehmen...)

Es ist IMHO nicht möglich einem TControl Nachfahren eine brauchbare eigene Implementierung von Text zu verpassen.
Weder setter noch getter sind virtual protected. Also lässt sich da nicht viel auf eine zumutbare Art machen...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 16:11
Zitat von Robert_G:
... D.h: diese Klasse wird sich nicht so verhalten wie es der Nutzer erwarten würde....
Was meinst Du mit "verstecken"? .Text wird doch einfach zu einer ReadOnly Eigenschaft.

Aber was würde er denn erwarten? Wenn beim auslesen von .Text etwas anderes kommen soll als in dem Edit steht wird der Nutzer doch sicherlich auch sehr seltsam schauen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 16:19
Du erzeugst eine NEUE Property.
TEdit(DeinEdit).Text -> "normales" Text
DeinEdit.Text -> das neue Text
Das Problem dabei ist, dass das "polymorphisch betrachtet" inkonsistent ist. Schließlich ist es keine readonly Property, da eine Verwendung als Vorgänger dir wieder Schreibrechte gibt.
Man müsste also auch noch Change überschrieben um auf Änderungen zu reagieren...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 16:34
Du kannst die Fenstermeldungen WM_GETTEXT und WM_GETTEXTLEN abfangen und dort jeweils deinen konstanten String einsetzen. Musst aber aufpassen, dass du bei WM_GETTEXT nicht den Puffer überschreibst.
Volker
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#10

Re: TEdit Text "überschreiben"

  Alt 21. Jun 2005, 20:00
Ihr habt das jetzt in den falschen Hals bekommen

Natürlich ist der String nicht Konstant wäre sonst ja auch einfach. Eher sowas:

Delphi-Quellcode:
ReadText
begin
  if bedingung then
    Result := IntToStr(StrToInt(Text) *2)
  else
    Result := Text;
end;
Ist wie gesagt nur ein Beispiel. Also ist die Ausgabe nicht konstant.

Hintergedanke ist folgende:
In diesem Edit sollen Temperaturen eingegeben werden. Die Temperatur die aber gelsesen werden soll, soll immer °C sein gleichzeitig aber soll im Edit die Temperatur stehen die der Benutzer auch eigegeben hat. Da ich immer die Temperatur über "Text" auslesen will, hab ich mir eben das überlegt das meine Frage war um mir die Arbeit zu erleichtern.
Oder hat jemand eine bessere Lösung?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:58 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