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 D2005 und keypreview (https://www.delphipraxis.net/58755-d2005-und-keypreview.html)

hanspeter 12. Dez 2005 10:48


D2005 und keypreview
 
Hallo,
ich habe wieder mal ein Problem bei der Umstellung von D7 auf D2005/6.
In einem Form ist keypreview auf true gesetzt und das Ereignis onkeydown abgefangen.
Dieses Ereignis kommt jedoch nur durch, wenn ActiveControl <> nil ist.
Ich will in einer Paintbox eine Grafik mit der Tastatur steuern.
Als workaround habe ich hinter einem Panel ein Editfenster (verdeckt) angeordnet und
setze bei ActiveControl=nil in einem Timer immer Edit1.Setfocus.
Weis wer eine bessere Lösung? Unter Delphi 7 funktionierte das problemlos.

Gruß
Peter

hanspeter 12. Dez 2005 11:41

Re: D2005 und keypreview
 
Also das scheint ein Bug in der VCL zu sein.
Trotz keypreview kommen keine Tastaturereignisse in der Form an, wenn
ActiveControl = nil ist.
Ich habe mir jetzt mit einer ApplicationEvent Componente geholfen.
(Es wird Strg + und strg - zum Zoomen abgefangen).

Hier die Lösung :

Delphi-Quellcode:
procedure Tf_Struktur.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if MSG.message = wm_keydown then
  begin
    if msg.wParam = 107 then
    begin
      Grafik.MouseWhel(120,LastMousepos);
      msg.wParam := 0;
      msg.message := 0;
    end;
  if msg.wParam = 109 then
    begin
      Grafik.MouseWhel(-120,LastMousepos);
      msg.wParam := 0;
      msg.message := 0;
    end;
  end;
end;
Gruß Peter

[edit=sakura] [delphi]Tags Mfg, sakura[/edit]

Surrounder 12. Dez 2005 11:47

Re: D2005 und keypreview
 
Also ich habe kein ActiveControl gesetzt und bei mir wird wenn KeyPreview True ist das Event OnKeyDown ausgelöst. Hast Du denn die Updates installiert die es für D2005 gibt? Oder hab ich das jetzt falsch verstanden?

hanspeter 12. Dez 2005 11:59

Re: D2005 und keypreview
 
Zitat:

Zitat von Surrounder
Also ich habe kein ActiveControl gesetzt und bei mir wird wenn KeyPreview True ist das Event OnKeyDown ausgelöst. Hast Du denn die Updates installiert die es für D2005 gibt? Oder hab ich das jetzt falsch verstanden?

Ja alle Updates sind bei 2005 eingespielt.
In der Form ist neben einigen Menüs nur ein Treeview und eine Paintbox.
Der Fehler ist reproduzierbar aber inzwischen als Problem erst mal erledigt.

Gruß

Peter


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