Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: [gelöst] Cursortasten von Buttons fernhalten

  Alt 20. Sep 2017, 10:11
Noch ein bisserl kürzer:
...
Das stimmt! Ich wusste nicht, dass von Hause aus gilt Handled:= False; . Ich werde gleich mal den Code anpassen. Ich habe es übrigens bei mir auch mit einer Variable besser lesbar gemacht.

Allerdings ist die Lösung doch (noch) nicht perfekt:
Wenn ich jetzt ein weiteres Fenster öffne und dort mit den Cursortasten rumhantiere, dann bewegt sich munter der jeweils auf dem Hauptform befindliche, aktive TButton. Auf dem Kindfenster passiert hingegen nichts mehr Das ist sehr ungünstig. Daher noch ein weiteres Codeschnipsel :
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
const
  STEP = 16;
var
  Button: TButton;
begin
  if (Screen.ActiveForm = self) and // Ist das gewünschte Fenster aktiv?
     (ActiveControl is TButton) then
    begin
      Button := TButton(ActiveControl);
      Handled := true;
      case Msg.CharCode of
         VK_LEFT : Button.Left := Button.Left - STEP;
         VK_UP : Button.Top := Button.Top - STEP;
         VK_RIGHT : Button.Left := Button.Left + STEP;
         VK_DOWN : Button.Top := Button.Top + STEP;
      else
         Handled := False;
      end;
    end;
end;
Alex Winzer
  Mit Zitat antworten Zitat