Delphi-PRAXiS

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: numbersOnly erweitern oder Meldung nutzen (https://www.delphipraxis.net/159234-tedit-numbersonly-erweitern-oder-meldung-nutzen.html)

fkerber 19. Mär 2011 10:10


TEdit: numbersOnly erweitern oder Meldung nutzen
 
Hi,

ich habe ein Edit-Feld, in das neben Zahlen auch der Decimal-Separator eingegeben werden können soll.
Daher kann ich die Eigenschaft numbersOnly ja nicht nutzen.
Das ist technisch kein Problem, es gibt ja onKeyPress und dann macht man es eben selbst.
Was dabei aber etwas auf der Strecke bleibt, ist die Rückmeldung an den Nutzer - daher die Frage: Kann man irgendwie diese Meldung antriggern, die kommt, wenn numbersOnly gesetzt ist und eine Nicht-Zahl eingegeben wird?
Oder numbersOnly so ausdehnen, dass ich den Decimal-Separator da mit reinnehmen kann?


Liebe Grüße,
Frederic

himitsu 19. Mär 2011 11:28

AW: TEdit: numbersOnly erweitern oder Meldung nutzen
 
NumbersOnly stetzt einfach nur den Window-Style MSDN-Library durchsuchenES_NUMBER.
Dieses kann man wohl nur noch weiter einschränken und nicht mehr erweitern.

Also dann doch alles selber machen (gibt ja genügend Codebeispiele dafür in der DP zu finden),
und für die Anzeige nimmst du einen BalloonTip.

PS: OnKeyDown alleine hilft nichts. OnCange muß mindestens auch noch geprüft werden, denn sonst könnte man ja einfach ungültige Zeichen reinkopieren.

fkerber 19. Mär 2011 12:02

AW: TEdit: numbersOnly erweitern oder Meldung nutzen
 
Hi,

ja, so werde ich es dann wohl machen.
In dem Fall reicht auch onKeyPress für mich, das verhindert ja Strg+V grad mit und das PopupMenu ist auch deaktiviert.

LG, Frederic

himitsu 19. Mär 2011 12:59

AW: TEdit: numbersOnly erweitern oder Meldung nutzen
 
SendMessage+WM_SETTEXT oder SetWindowText :stupid:

Björn Ole 19. Mär 2011 16:55

AW: TEdit: numbersOnly erweitern oder Meldung nutzen
 
WindowProc überschreiben:
Delphi-Quellcode:
procedure TForm1.Edit1WndProc(var Message: TMessage);
var
  Input: Char;
begin
  Input := Chr(Message.WParam);
  if (Message.Msg = WM_CHAR) and (Input = FormatSettings.DecimalSeparator) then
    Edit1.SelText := Input
  else
    FOldEdit1WndProc(Message);
end;


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf