AGB  ·  Datenschutz  ·  Impressum  







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

Strg + Pfeiltaste runter

Ein Thema von Nils_13 · begonnen am 12. Feb 2008 · letzter Beitrag vom 13. Feb 2008
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Strg + Pfeiltaste runter

  Alt 12. Feb 2008, 17:14
Hi,

wenn ich if (ssCtrl in Shift) and (Key = VK_UP) then 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_DOWN) then Woran liegt das ?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Strg + Pfeiltaste runter

  Alt 12. Feb 2008, 17:19
Von welcher Komponente reden wir hier?
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: Strg + Pfeiltaste runter

  Alt 12. Feb 2008, 17:20
Ganz vergessen, Listbox.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Strg + Pfeiltaste runter

  Alt 12. Feb 2008, 22:22
Hi,

dazu habe ich mal ein Testprojekt mit einer Listbox erstellt, bei mir funktioniert auch if (ssCtrl in Shift) and (Key = VK_DOWN) then
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
lorand
(Gast)

n/a Beiträge
 
#5

Re: Strg + Pfeiltaste runter

  Alt 13. Feb 2008, 01:25
Ist in der Listbox denn überhaupt genug drin für [Strg+Pfeiltaste runter]?

mfg
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: Strg + Pfeiltaste runter

  Alt 13. Feb 2008, 18:39
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;
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Strg + Pfeiltaste runter

  Alt 13. Feb 2008, 19:21
Moin Nils_13,
Zitat von Nils_13:
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 // dieses else gehört zu if ActiveControl = lbKat then
  if (ssCtrl in Shift) and (Key = VK_UP) then
    if ActiveControl = lbKat then
      mKatMoveHoch.Click
  else
  if Key = VK_ESCAPE then
    Close;
end;
füge mal überall zu jedem "then" und "else" jeweils "begin" und "end" ein. Dann sollte es klappen. Siehe Kommentar im zitierten Quellcode.
Und es sieht übersichtlicher aus imho.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#8

Re: Strg + Pfeiltaste runter

  Alt 13. Feb 2008, 19:35
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 !
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Strg + Pfeiltaste runter

  Alt 13. Feb 2008, 20:17
Hallo,

um den Fallen einer geschachtelten IF-Anweisung zu entkommen, kann man auch eine CASE-Anweisung einsetzen:

Delphi-Quellcode:
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;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:51 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