Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   KeyPress in einer von TEdit abgeleiteten Klasse überschreiben (https://www.delphipraxis.net/177482-keypress-einer-von-tedit-abgeleiteten-klasse-ueberschreiben.html)

Photoner 8. Nov 2013 15:27

Delphi-Version: 2007

KeyPress in einer von TEdit abgeleiteten Klasse überschreiben
 
Hallo,

ich hab schon auch selber danach gegoogelt, aber ich komme nicht dahinter wo der Fehler liegt (vielleicht ist es auch zu banal/ Brett vor dem Kopf):

Was mache ich? Ich leite meine neue Klasse von TEdit ab. Klappt soweit alles. Jetzt will ich aber nur Zahlen und Rechenoperatoren in der Eingabe zulassen; KeyPress überschreiben.
Delphi-Quellcode:
protected
    procedure KeyPress(var Key: Char);override;
Klappt soweit.
In der Methode klappt auch:
Delphi-Quellcode:
  if not (Key in ['0'..'9','.',',','+','-','*','/',#8, #9, #13, #27, #33, #127]) then Key := #0;
Was nicht klappt, ist den "." oder das "," in den vom System vorgegebenen Dezimalseparator zu ändern.
Delphi-Quellcode:
 
SepChar := DecimalSeparator;
if Key = ',' and not (Key = SepChar) then Key := SepChar;
if Key = '.' and not (Key = SepChar) then Key := SepChar;
Hier meckert er nun bei der Zuweisung
Code:
Key := SepChar
mit dem Fehler: E2015 Operator ist nicht auf den Operandentyp anwendbar
Dasselbe kommt bei
Delphi-Quellcode:
Key := DecimalSeparator
.

Hat jemand eine Idee?

Grüße!

DeddyH 8. Nov 2013 15:32

AW: KeyPress in einer von TEdit abgeleiteten Klasse überschreiben
 
Da fehlen Klammern.
Delphi-Quellcode:
if (Key = ',') and not (Key = SepChar) then Key := SepChar;

Uwe Raabe 8. Nov 2013 15:33

AW: KeyPress in einer von TEdit abgeleiteten Klasse überschreiben
 
Du musst den ersten Key-Vergleich klammern. "=" ist schwächer als "AND".

Andererseits geht es aber auch kürzer:

Delphi-Quellcode:
if Key in [',', '.'] then Key := SepChar;

Photoner 8. Nov 2013 15:46

AW: KeyPress in einer von TEdit abgeleiteten Klasse überschreiben
 
Ich habs geahnt, dass es ein banaler Fehler ist . Danke!


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