In Nederland gebruiken we de komma als decimaalteken, terwijl er alleen een punt op het numerieke toetsenbord staat (Amerikaanse indeling). Dan moet de gebruiker toch de komma intoetsen buiten het numerieke toetsenbord.
Dit is heel makkelijk centraal in een applicatie op te lossen door het OnMessage event van de ApplicationEvents te gebruiken. Daar kun je afvangen of de decimaaltoets van het numerieke toetsenbord wordt ingedrukt. Is dit het geval dan wordt de toetscode door die van een komma vervangen.
procedure TfrmAppShell.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
Case Msg.Message of
WM_KEYDOWN, WM_KEYUP:
If (Msg.wparam = VK_DECIMAL) and (Odd(GetKeyState(VK_NUMLOCK))) Then
Begin
Msg.wparam := 188; // Komma
Msg.lparam := MakeLParam( LoWord( msg.lparam), (HiWord(Msg.lparam) and $FE00) +
MapVirtualKey( Msg.wparam, 0));
End;
End;
end;
Ed Sonneveld