Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TEdit Text "überschreiben" (https://www.delphipraxis.net/48161-tedit-text-ueberschreiben.html)

Robert_G 21. Jun 2005 20:47

Re: TEdit Text "überschreiben"
 
wie ich bereits schrieb: Du bräuchtest nur Change überschreiben. ;)

Ein abstrakter Bleistift würde so aussehen:
Delphi-Quellcode:
uses
   StdCtrls;

type
   TCelsiusEdit = class(TEdit)
   protected
      procedure Change; override;
   end;

implementation

uses
   StrUtils,
   SysUtils;

{ TCelsiusEdit }

procedure TCelsiusEdit.Change;
var
   TrimmedText :string;
   Dummy :double;
   IsNumeric, EndsWithCelcius :Boolean;
begin
   TrimmedText    := Trim(Text);
   IsNumeric      := TryStrToFloat(TrimmedText,Dummy);
   EndsWithCelcius := (RightStr(TrimmedText, 2) = '°C');

   if IsNumeric and not EndsWithCelcius then
      inherited Text := TrimmedText + ' °C'
   else
     inherited;

end;
Der Code ist /nicht/ gedacht um direkt übernommen zu werden! Nur um dir das Prinzip zu zeigen. ;)

LoL 22. Jun 2005 09:15

Re: TEdit Text "überschreiben"
 
Ich will doch aber nicht den Text verändern den der Benutzer eingegeben hat. Ich will lediglich den text verändern den man von dem Edit mit "Text" liest. Ist das überhaupt möglich?

Besipiel:
Im Edit steht "32" (°Fahrenheit). Nun will ich wenn ich den Text davon lese nicht "32" lesen sondern "0" ((32-32)/1.8). Im Edit soll aber weiterhin 32 drin stehen.

Robert_G 22. Jun 2005 09:31

Re: TEdit Text "überschreiben"
 
Achso...
Dann füge doch einfach eine Property á la FormattedText o.ä. hinzu. ;)
Change könntest du immer noch überschreiben, um zum Beispiel eine Exception auszulösen wenn etwas nicht numerisches drinsteht...

LoL 22. Jun 2005 09:38

Re: TEdit Text "überschreiben"
 
Genau das ist ja das was ich vermeiden wollte. Ich will weiterhin von der Eigenschaft Text lesen! Das zwar, wie im Beispiel, eine zahl drin steht aber beim lesen der Zahl eine andere zurückgegeben wird. Deshalb wollte ich das Read-Dingens von der TExt Property überschreiben. Hat aber irgendwie nicht so ganz geklappt. s.o.^^

Also wäre halt mein Vorschlag gewesen bei der Text-Property zwar Read zu überschreiben, aber Write so zu belassen. Hat aber wie gesagt nicht ganz so mit dem inherited funktioniert wie ich wollte :gruebel: .
Weis jemand dazu Rat?

BrunoT 22. Jun 2005 10:00

Re: TEdit Text "überschreiben"
 
Hi LoL

einfach folgendermassen:

Delphi-Quellcode:
Var
  GradCelsius:Integer;

...

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  Try
    GradCelsius:=StrToInt(Edit1.Text)-32;
  except
    GradCelsius:=0;
  end;
end;
Der Edit1.Text bleibt so wie er ist.

mfg

BrunoT

LoL 22. Jun 2005 10:05

Re: TEdit Text "überschreiben"
 
SCH*** kann mich mal jemand schlagen :mrgreen: ?
ich hab ja nicht daran gedacht das Text->Inhalt in der Komponente in der nicht Richtung verbunden sind, sondern nur Inhalt->Text.
:wall: Sow einfach kanns sein

Vielen Vielen dank :thumb:

Robert_G 22. Jun 2005 10:24

Re: TEdit Text "überschreiben"
 
Zitat:

Zitat von LoL
Genau das ist ja das was ich vermeiden wollte. Ich will weiterhin von der Eigenschaft Text lesen!

Wie ich oben bereits schrieb. Das kannst du nicht!
Weder Setter noch Setter sind virtual, virtual properties hat Delphi nicht und selbst wenn es das hätte hätten die Borländer es einfach "vergessen" so zu deklararieren. :roll:
Die Eigenschaft Text ist für dich in keinster Weise veränderbar, da keiner ihrer accessor virtuell ist. ;)
Es geht halt nur indem du in einer Read property auf Text zugreifst und hinten was anhängst... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.
Seite 2 von 2     12   

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