rechtes Komma eingeben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

rechtes Komma eingeben

Beitrag von Andromeda »

Hallo,

es tut mir leid, dass ich schon wieder eine Frage habe, aber ich habe noch nicht so viel Erfahrung.

Und zwar möchte ich in einem Editfeld nur die Eingabe bestimmter Zeichen zulassen und bestimmte andere verbieten. Dazu habe ich den folgenden Code geschrieben (dank der Hilfe dieses Forums):

Code: Alles auswählen

 
procedure TFormHaupt.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
     VK_0..VK_9, VK_RETURN, VK_BACK, VK_OEM_COMMA, VK_A, VK_C, VK_RIGHT, VK_LEFT,
     VK_TAB, VK_DELETE, VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4,
     VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9: Exit;
     VK_V: if Shift = [ssCtrl] then Exit;
   end;
   Key := 0;
end;
 
Da in das Editfeld viele Zahlen über den rechten Ziffernblock eingegeben werden, möchte ich auch die Eingabe des Kommas vom Ziffernblock erlauben. Doch das schaffe ich nicht. Ich habe es schon mit VK_NUM_COMMA; VK_NUMPAD_COMMA usw. probiert, aber das funktioniert alles nicht.

Weiß hier vielleicht jemand, welche Bezeichnung man für das rechte Komma verwenden muss?
Oder wo ich nachschauen kann?

wp_xyz
Beiträge: 5265
Registriert: Fr 8. Apr 2011, 09:01

Re: rechtes Komma eingeben

Beitrag von wp_xyz »

Wenn du die Unit mit den VK_XXX Konstanten eingebunden hast (lcltype), dann kannst du so vorgehen:
CTRL drücken und mit der Maus über die VK-Bezeichner in deinem Quelltext fahren --> der Bezeichner unter der Maus wird blau und unterstrichen, Das heißt, dass Lazarus diesen Bezeichner kennt. Dann den erkannten Bezeichner mit der linken Maustaster (und CTRL gedrückt) anklicken. --> Lazarus öffnet die Unit, in der der Bezeichner definiert ist. Hier hast du alle VK-Bezeichner aufgeführt. Schau dir die Liste an, ob einer in Frage kommt. Wie wär's mit VK_DECIMAL?

Falls du nicht weißt, in welcher Unit die VK-Konstanten deklariert sind: rechts anklicken, dann "Suchen", "In Dateien suchen". Eine der Fundstellen öffnen und weiter wie oben.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: rechtes Komma eingeben

Beitrag von MacWomble »

VK_Decimal

Hier gebt es ein gutes Hilfsmittel:

http://www.docstoc.com/docs/54696464/De ... rence-Card
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: rechtes Komma eingeben

Beitrag von Andromeda »

Vielen Dank,

Ihr seid Spitze.

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: rechtes Komma eingeben

Beitrag von SoE »

@Andromeda:
Dein Quellcode funktioniert bei mir überhaupt nicht, auch wenn ich den compilieren kann, aber runtime funzt gar nichts...
Das Einzige was bei mir plötzlich nicht mehr funzt ist das Komma des Ziffernblocks??

Wenn ich stattdessen das hier nehme:

Code: Alles auswählen

 
Procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 Begin
  If Key = VK_OEM_COMMA Then Key := 0;
  If Key = VK_BACK      Then Key := 0;
 End;
 
Dann kann ich das normale Komma nicht eingeben (logisch) und Backspace auch nicht (logisch) und das Komma vom Ziffernblock funzt ganz prächtig.
Eigentlich auch logisch... ich hab' s ja gar nicht verboten...

Wie zum Geier hast du den Code zum laufen gebracht ?? Anderes OS ?? Kannst du zaubern??

Michl
Beiträge: 2513
Registriert: Di 19. Jun 2012, 12:54

Re: rechtes Komma eingeben

Beitrag von Michl »

SoE hat geschrieben:Dein Quellcode funktioniert bei mir überhaupt nicht, auch wenn ich den compilieren kann, aber runtime funzt gar nichts...
Das Einzige was bei mir plötzlich nicht mehr funzt ist das Komma des Ziffernblocks??
Eben! Andromeda erlaubt nur die Eingabe der Keyboardkeys, die oben gepostet sind (alle anderen Keys setzt Andromeda auf 0). Du erlaubst die Eingabe aller Keys, sperrt nur Komma und Backspace.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: rechtes Komma eingeben

Beitrag von SoE »

Hmmm lustig, ja ich hab' da was in den falschen Hals bekommen, vielleicht sollte ich das nächste Mal genauer hinschauen... grins...
Egal.. uses LCLType kannte ich noch nicht .. gute Info...

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: rechtes Komma eingeben

Beitrag von Komoluna »

SoE hat geschrieben:Egal.. uses LCLType kannte ich noch nicht .. gute Info...
Tja, man lernt eben nie aus ^v^

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten