![]() |
<Strg> + <Leer> Abfangen, aber Leerzeichen nicht
Ich möchte, wenn man bei einem Memo <Strg>+<Leer> eingibt, dass kein Leerzeichen in das Memo geschrieben wird.
Wie kann ich das umgehen? Ich benutze z.Zt. "KeyDown"
Delphi-Quellcode:
procedure TfrmSettings.mEndKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if ([ssCtrl] = Shift) and (key = VK_SPACE) then begin // Dann soll er was machen end; end; |
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Dir das ganze in einem Boolean merken und im OnChange das Leerzeichen raushauen :)
Ich glaub, das ist die einzige Möglichkeit. Eventuell feuert OnKeyPress da, da kannst du dann deinen Key auf #0 setzen, falls du das Boolean gesetzt hast - eine etwas elegantere Möglichkeit. |
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Das Problem ist, dass das Leerzeichen, davor gezeichnet wird...
Was auch möglich wäre, eine eine Memo zu machen, und die KeyPressmethode überschreiben... |
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Key ist die Variable, die das enthält, was dann geschrieben wird. Setze da einfach nix rein:
Delphi-Quellcode:
Key:=#0;
|
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Ja ich weis: Aber bei key down (was ich wegen der Strg-Taste brauch), hat er schon vorher das Zeichen gezeichnet...
|
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
So gehts:
Delphi-Quellcode:
var
StrgDown: Boolean = False; {...} procedure TForm3.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_CONTROL then StrgDown := True; end; procedure TForm3.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_CONTROL then StrgDown := False; end; procedure TForm3.Memo1KeyPress(Sender: TObject; var Key: Char); begin if (Key = ' ') and StrgDown then Key := #0; end; |
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Ah Danke! So funktionierts... :drunken:
|
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Noch etwas einfacher wäre das hier:
Delphi-Quellcode:
procedure TForm3.Memo1KeyPress(Sender: TObject; var Key: Char);
begin if (Key = ' ') and (GetKeyState(VK_CONTROL) < 0) then Key := #0; end; |
Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
Das ist natürlich die Beste Lösung!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz