Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VirtualStringTree OnKeyPress wird ohne Focus auf VST ausgeführt (https://www.delphipraxis.net/200347-virtualstringtree-onkeypress-wird-ohne-focus-auf-vst-ausgefuehrt.html)

Bünni 11. Apr 2019 13:46

VirtualStringTree OnKeyPress wird ohne Focus auf VST ausgeführt
 
Mein VirtualStringTree hat ein eigenes OnKeyPress wo ich VK_F4 und VK_Return abfrage.
Wenn ich VK-F4 drücke wird ein modales Formular geöffnet. Auf diesem Formular gibt es ein TEdit welches auf die Entertaste reagiert und in diesem Fall einen Button klick, welcher das Formular schließen soll

Delphi-Quellcode:
procedure TForm2.Edit1KeyPress(Sender: TObject);
begin
 if (Key = #13) then
  begin
   Key := #0;
   Button1Click(Self);
  end;
end;

procedure TForm2.Button1Click(Sender: TObject; var Key: Char);
begin
 // viele Konditionen und Dinge

 Close;
end;
Das funktioniert alles wie gewollt bis auf, dass sobald Form2 geschlossen ist sich VSTKeyUp meldet und denkt, ich hätte VK_ENTER gedrückt. Habe ich auch, aber in einem anderen modalen Fenster.
Wie unterbinde ich dieses Verhalten?

bcvs 11. Apr 2019 15:06

AW: VirtualStringTree OnKeyPress wird ohne Focus auf VST ausgeführt
 
Hast du das mal langsam ausprobiert? Wenn du im Edit Return drückst und gedrückt lässt, wird das Formular geschlossen. Dann lässt du die Return-Taste lost und das Keyup-Event kommt beim Vst an.

Du solltes hier nicht OnKeyPress und OnKeyUp mischen. Also entweder in Vst und im TEdit auf OnKeyPress reagieren oder in beiden OnKeyUp verwenden.

TurboMagic 11. Apr 2019 19:53

AW: VirtualStringTree OnKeyPress wird ohne Focus auf VST ausgeführt
 
Ggf. den fälschlicherweise aufgerufenen Eventhandler beim VST an der entsprechenden Stelle mal auf nil setzen, dann kann da nix mehr aufgerufen werden.
Vermutlich muss er später aber wieder zugewiesen werden.

Bünni 11. Apr 2019 22:38

AW: VirtualStringTree OnKeyPress wird ohne Focus auf VST ausgeführt
 
Für das VST habe ich OnKeyDown genommen und OnKeyUp ersetzt.
Das scheint so jetzt ganz gut zu funktionieren.
OnKeyUp scheint aber auch allgemein ein Teufel zu sein auch was Fokus angeht. Werde es nicht mehr nutzen wenn möglich.

Understanding and Processing Keyboard Events in Delphi


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