![]() |
Strg + Pfeiltaste runter
Hi,
wenn ich
Delphi-Quellcode:
benutze, wird die gewünschte Aktion bei Strg+Pfeiltaste hoch durchgeführt. Bei Pfeiltaste runter funktioniert das nicht:
if (ssCtrl in Shift) and (Key = VK_UP) then
Delphi-Quellcode:
Woran liegt das ?
if (ssCtrl in Shift) and (Key = VK_DOWN) then
|
Re: Strg + Pfeiltaste runter
Von welcher Komponente reden wir hier?
|
Re: Strg + Pfeiltaste runter
:oops: Ganz vergessen, Listbox.
|
Re: Strg + Pfeiltaste runter
Hi,
dazu habe ich mal ein Testprojekt mit einer Listbox erstellt, bei mir funktioniert auch
Delphi-Quellcode:
:gruebel:
if (ssCtrl in Shift) and (Key = VK_DOWN) then
|
Re: Strg + Pfeiltaste runter
Ist in der Listbox denn überhaupt genug drin für [Strg+Pfeiltaste runter]?
mfg |
Re: Strg + Pfeiltaste runter
Es ist genug drinnen....
Der Fehler ist echt übel, liegt scheinbar nicht an meinem Code: Liegt VK_DOWN oben (im Code so gezeigt), wird VK_DOWN ausgeführt, VK_UP funktioniert dafür nicht. Liegt VK_UP weiter oben, wird VK_UP ausgeführt, VK_DOWN dafür nicht. Ich versteh den Fehler nicht:
Delphi-Quellcode:
procedure TfrmSettings.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if (ssCtrl in Shift) and (Key = Ord('N')) then mValNeu.Click else if (ssCtrl in Shift) and (Key = VK_DELETE) then mValDel.Click else if (ssCtrl in Shift) and (ssAlt in Shift) and (Key = Ord('N')) then mKatNeu.Click else if (ssCtrl in Shift) and (Key = VK_DOWN) then if ActiveControl = lbKat then mKatMoveRunter.Click else if (ssCtrl in Shift) and (Key = VK_UP) then if ActiveControl = lbKat then mKatMoveHoch.Click else if Key = VK_ESCAPE then Close; end; |
Re: Strg + Pfeiltaste runter
Moin Nils_13,
Zitat:
Und es sieht übersichtlicher aus imho. |
Re: Strg + Pfeiltaste runter
Ah, was für ein dummer Fehler. Ich finde es so unübsichtlicher, naja ist ja auch egal, der Compiler interpretiert es so nicht korrekt, werde es wohl so machen müssen. Danke, wäre nie drauf gekommen :) !
|
Re: Strg + Pfeiltaste runter
Hallo,
um den Fallen einer geschachtelten IF-Anweisung zu entkommen, kann man auch eine CASE-Anweisung einsetzen:
Delphi-Quellcode:
Gruß Hawkeye
procedure TfrmSettings.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
const key_ValNeu = scCtrl or Ord('N'); key_ValDel = scCtrl or VK_DELETE; key_KatNeu = scCtrl or scAlt or Ord('N'); key_KatMoveRunter = scCtrl or VK_DOWN; key_KatMoveHoch = scCtrl or VK_UP; key_Close = VK_ESCAPE; begin case {Menus.}ShortCut(Key, Shift) of key_ValNeu: mValNeu.Click; key_ValDel: mValDel.Click; key_KatNeu: mKatNeu.Click; key_KatMoveRunter: if ActiveControl = lbKat then mKatMoveRunter.Click; key_KatMoveHoch: if ActiveControl = lbKat then mKatMoveHoch.Click; key_Close: Close; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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-2025 by Thomas Breitkreuz