![]() |
Re: TEdit Text "überschreiben"
wie ich bereits schrieb: Du bräuchtest nur Change überschreiben. ;)
Ein abstrakter Bleistift würde so aussehen:
Delphi-Quellcode:
Der Code ist /nicht/ gedacht um direkt übernommen zu werden! Nur um dir das Prinzip zu zeigen. ;)
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; |
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. |
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... |
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? |
Re: TEdit Text "überschreiben"
Hi LoL
einfach folgendermassen:
Delphi-Quellcode:
Der Edit1.Text bleibt so wie er ist.
Var
GradCelsius:Integer; ... procedure TForm1.Edit1Exit(Sender: TObject); begin Try GradCelsius:=StrToInt(Edit1.Text)-32; except GradCelsius:=0; end; end; mfg BrunoT |
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: |
Re: TEdit Text "überschreiben"
Zitat:
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 17:37 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