Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit: "Text ergänzen" (https://www.delphipraxis.net/142956-tedit-text-ergaenzen.html)

Mattze 6. Nov 2009 16:43


TEdit: "Text ergänzen"
 
Hi,

ist ein komischer Titel, aber ich weiß nicht, wie ich das Problem kurz machen soll.

Ich leite mir eine Komponente von TSpinedit ab, die ja wieder von TCustomEdit kommt.
Wenn ich den Text nun direkt im Programm setze, muss ich noch eine boolsche Variable setzen,
die mir sagt, was da drin steht.
Wie komme ich an das "Textsetzen" ran. Es wir (in TWinControl?) mit Settextbuf gemacht. Da steht "nur"
sendmessage drin.
Muss ich das nun überschreiben - und funktioniert das?
Oder muss ich weiterhin darauf achten, dass ich eben beim Textsetzen gleich zwei Sachen mache, den Text und die Variable?
Was ist günstiger?

Gruß
Mattze

implementation 6. Nov 2009 17:51

Re: TEdit: "Text ergänzen"
 
Dein Beitrag liefert viele Infos drumrum, aber das Problem hast du nicht genannt.
Was genau soll deine neue Komponente tun?

DeddyH 6. Nov 2009 17:54

Re: TEdit: "Text ergänzen"
 
Zitat:

Wenn ich den Text nun direkt im Programm setze, muss ich noch eine boolsche Variable setzen,
die mir sagt, was da drin steht.
Allein dieser Satz übersteigt bereits meinen Intellekt :gruebel:

Mattze 6. Nov 2009 18:01

Re: TEdit: "Text ergänzen"
 
Hi,

ich glaube zwar nicht, dass das wesentlich ist, aber wenn Du's wissen willst:
Das ist (funktioniert schon) eine Spinedit-Ableger, der auch Hexen annimmt.
Man kann also den Text '12345' oder eben '$abcdef' eingeben und entsprechend der Eingabe wird der Text behandelt.
(Als Value wird allerdings "nur" die Dezimalform geliefert.)
Um das ordentlich behandeln zu können, muss ich der Komponente sagen, was da im Text steht.
Wenn ich dem Text nun etwas im Programm zuweise, muss ich ihm das auch sagen.
Dieses Sagen ist das Setzen einer boolschen Variable FHex. Und das würde ich gerne automatisch beim Setzen des Textes machen. Zurzeit muss ich das neben dem Text auch noch explizit setzen machen!

Gruß
Mattze

DeddyH 6. Nov 2009 18:03

Re: TEdit: "Text ergänzen"
 
Wie willst Du das denn unterscheiden? Wenn ich 32 eingebe, kann das sowohl 32 als auch 50 bedeuten.

[edit] Das "auch" vergessen [/edit]

Mattze 6. Nov 2009 18:42

Re: TEdit: "Text ergänzen"
 
Hi,

hast Du Dir mal die "möglichen Texteingaben" angesehen?
Wie unterscheided Delphi, ob es ein Text oder eine Hexazahl ist.
Jaaa, mit dem vorangestellten $.
Damit dürfte es dann eindeutig sein, ob da 32 oder $32 (= 50) gemeint ist.

Gruß
Mattze

DeddyH 6. Nov 2009 18:44

Re: TEdit: "Text ergänzen"
 
Dann brauchst Du doch auch keine Bool'sche Variable, da Du beim Parsen unterscheiden kannst, wie die Eingabe zu interpretieren ist :nerd:

Mattze 6. Nov 2009 19:03

Re: TEdit: "Text ergänzen"
 
Hi,

ganz so einfach ist das leider nicht.
Bsp: in Downclick (und Upclick) wird Value decrementiert (incrementiert).
Durch die Zuweisung zu Value wird aber der Text bereits verändert (SetValue) und zwar als Dezimalzahl (inttostr).
Ich muss also VORHER wissen, wie ich Text zu gestalten habe.

Dein Hinweis ist aber trotzdem gut. Vielleicht reicht es tatsächlich aus, dass in SetValue vorher abzufragen.
Mal schauen...

Gruß
Mattze

Jetzt bin ich etwas durcheinander gekommen. Wäre ja das gleiche in grün! Setvalue ist ja im Vorfahr TSpindit definiert.
Kann man so eine "Eigenschaftsprozedur" eigentlich überschreiben?

implementation 7. Nov 2009 09:07

Re: TEdit: "Text ergänzen"
 
Wenn sie virtuell oder dynamisch ist ja, sonst nein.

Mattze 7. Nov 2009 12:27

Re: TEdit: "Text ergänzen"
 
Hallo,

vielen Dank für Eure Tipps. Wirklich!
Dadurch bin ich auf den Gedanken gekommen, "einfach" die Eigenschaft Value aus TSpinedit neu zu definieren mit den "Eigenschaftsprozeduren", wie ich sie brauche. Scheint zu funktionieren!!!
(Dadurch spare ich mir die Abfragen nach dem Typ ('$' an erster Stelle von Text oder nicht?) in den Prozeduren. Das macht SetValue gleich richtig.)

Mal sehen, ob das wirklich OK ist. Ich mag's kaum glauben, weil das so einfach aussieht!

Gruß
Mattze


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

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