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 - unterschiedliches Verhalten Vista/XP (https://www.delphipraxis.net/143995-tedit-numbersonly-unterschiedliches-verhalten-vista-xp.html)

Andreas L. 27. Nov 2009 15:22


TEdit.NumbersOnly - unterschiedliches Verhalten Vista/XP
 
Hi,

ich möchte in einem TEdit nur Zahlen zulassen. Jetzt hat ja das TEdit von Delphi 2009 die Eigenschaft NumbersOnly, die unter Vista auch super funkioniert. Unter XP kann man zwar keine Buchstaben eintippen, diese aber über STRG+V bzw. Rechtsklick trotzdem einfügen.

Im Setter dieser Eigenschaft wird mit SetWindowLong das Edit entsprechend eingestellt:

Delphi-Quellcode:
      if FNumbersOnly then
        SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) or ES_NUMBER)
      else
        SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not ES_NUMBER);
Liegt das Problem hier an WinXP oder fehlt lediglich noch ein Parameter bei SetWindowLong? Oder muss ich doch selber das OnKeyPress bzw. OnChange-Ereignis behandeln?

Schöne Grüße,
Andreas

DeddyH 27. Nov 2009 15:28

Re: TEdit.NumbersOnly - unterschiedliches Verhalten Vista/XP
 
Lies mal unter Edit Control Styles nach.
Zitat:

ES_NUMBER
Allows only digits to be entered into the edit control. Note that, even with this set, it is still possible to paste non-digits into the edit control.
Interessant ist auch der Beitrag am Ende, da wird genau das beschrieben, was Du auch beobachtet hast.

Andreas L. 27. Nov 2009 15:32

Re: TEdit.NumbersOnly - unterschiedliches Verhalten Vista/XP
 
Das ist ja blöd. Naja, mach ichs halt per Hand :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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