Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi <Strg> + <Leer> Abfangen, aber Leerzeichen nicht zeichnen (https://www.delphipraxis.net/86208-strg-leer-abfangen-aber-leerzeichen-nicht-zeichnen.html)

xZise 10. Feb 2007 22:09


<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;

DGL-luke 10. Feb 2007 22:19

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.

xZise 10. Feb 2007 22:43

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...

BenjaminH 10. Feb 2007 22:46

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;

xZise 10. Feb 2007 22:49

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...

Martin K 10. Feb 2007 22:51

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;

xZise 10. Feb 2007 22:56

Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
 
Ah Danke! So funktionierts... :drunken:

Martin K 10. Feb 2007 22:58

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;

xZise 10. Feb 2007 23:30

Re: <Strg> + <Leer> Abfangen, aber Leerzeichen n
 
Das ist natürlich die Beste Lösung!


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