Hallo Florian,
so könntest du prinzipiell vorgehen:
Delphi-Quellcode:
// uses Windows
// Einsatz z.B. in FormKeyDown()
function ShiftedKey (aKey: Word): Char;
var
KeyState : TKeyboardState;
Buffer : array [0..1] of char;
Count : Integer;
begin
ZeroMemory (@KeyState, SizeOf(KeyState));
KeyState[VK_SHIFT] := 128; // Shift-Taste gedrückt
ZeroMemory (@Buffer, SizeOf(Buffer));
Count := ToAscii(aKey, MapVirtualKey(aKey, 0), KeyState, @Buffer, 0);
if (Count = 1) then
Result := Buffer[0]
else
Result := #0;
end;
// Einsatz z.B. in FormKeyPress()
function ShiftedChar (aChar: Char): Char;
begin
Result := ShiftedKey(VKKeyScan(aChar));
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Caption := ShiftedKey(Key);
end;
Beachte, dass in den Routinen mögliche Fehlercodes nicht ausgewertet werden.
Gruß Hawkeye