AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Cursortasten von Buttons fernhalten

Ein Thema von Schwedenbitter · begonnen am 19. Sep 2017 · letzter Beitrag vom 20. Sep 2017
 
Schwedenbitter

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

[gelöst] Cursortasten von Buttons fernhalten

  Alt 19. Sep 2017, 16:12
Hallo,

ich nutze dynamisch erzeugte Buttons auf einer TScrollBox. Diese können mit der Maus frei verschoben werden (ähnlich Delphi IDE). Nun möchte ich eine Art Raster dadurch erreichen, dass der Benutzer diese Buttons ebenfalls mittels Tastatur verschieben kann und ich dann die Werte auf Vielfache von 8, 16 oder so runde.
Mit einem Button allein klappt das prima. Mit 2 oder mehr nicht, weil dann mit den Cursortasten der Focus gewechselt und meine Aktion auf eine anderes Control angewendet wird. Im www stand dazu, dass man den Buttons diese Verhalten abgewöhnen kann, indem man Key:= 0; setzt.

Aber ganz so einfach scheint es dann doch nicht zu sein. Denn folgender Code funktioniert eben nur bedingt:
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
   aControl         : TWinControl;
   aButton         : TButton;
begin
   aControl:= ActiveControl;         // aktives Control merken
   if (aControl is TButton) then
   begin
      aButton:= (aControl as TButton);
      case Key of
         VK_LEFT   : aButton.Left:= aButton.Left - 16;
         VK_UP      : aButton.Top:= aButton.Top - 16;
         VK_RIGHT   : aButton.Left:= aButton.Left + 16;
         VK_DOWN   : aButton.Top:= aButton.Top + 16;
      end;
      Key:= 0;                        // <== Tastaturpuffer gelöscht.
      SetFocusedControl(aControl);   // <== Focus nochmal gesetzt
   end;
end;
Ich vermute also, dass VK_LEFT & Co. immer noch irgendwo im Tastaturpuffer rumlungern. Wie löse ich das Problem denn richtig?
Alex Winzer

Geändert von Schwedenbitter (20. Sep 2017 um 07:55 Uhr) Grund: Redeemer hat die Lösung präsentiert.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 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 by Thomas Breitkreuz