AGB  ·  Datenschutz  ·  Impressum  







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

Keypress Problem bei Setfocus

Ein Thema von thomas2009 · begonnen am 23. Jan 2009 · letzter Beitrag vom 18. Feb 2009
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

Keypress Problem bei Setfocus

  Alt 23. Jan 2009, 00:54
Hallo


Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if(Key =39)then
    begin
      ShowMessage('Pfeil rechts');
    end;
Es funktioniert nur wenn der Focus in einem Edit !
Wenn ein BitBtn Button zum beispiel den Focus hat, dann funktioniert nicht
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Keypress Problem bei Setfocus

  Alt 23. Jan 2009, 04:07
Im OI für die Form KeyPreview auf True setzen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

Re: Keypress Problem bei Setfocus

  Alt 23. Jan 2009, 08:04
Zitat von turboPASCAL:
Im OI für die Form KeyPreview auf True setzen.
Ich weiß nicht, wie oft ich ihm das schon gesagt habe...
Uwe Raabe
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Keypress Problem bei Setfocus

  Alt 23. Jan 2009, 09:20
Hallo,

zum sicheren Abfangen der Pfeiltasten könnte man das Ereignis TForm.OnShortCut verwenden:

Delphi-Quellcode:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  Key : TShortCut;
begin
  Key := {Menus.}ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData));

  if (Key = VK_RIGHT) then
    begin
      ShowMessage ('Gotcha!');
      Handled := True;
    end
Gruß Hawkeye
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#5

Re: Keypress Problem bei Setfocus

  Alt 23. Jan 2009, 22:49
Zitat von turboPASCAL:
Im OI für die Form KeyPreview auf True setzen.
Natürlich ist KeyPreview auf true
Teste doch

______
Zitat von Hawkeye219:
Hallo,

zum sicheren Abfangen der Pfeiltasten könnte man das Ereignis TForm.OnShortCut verwenden:

Delphi-Quellcode:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  Key : TShortCut;
begin
  Key := {Menus.}ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData));

  if (Key = VK_RIGHT) then
    begin
      ShowMessage ('Gotcha!');
      Handled := True;
    end
Dein Code funktioniert viel besser und unabhängig von dem Fokus

Edit :
Es gibt aber ein problem mit der Tasten kombination zum beispiel :
Delphi-Quellcode:
  if ((Key = VK_CONTROL) and (Key = VK_RIGHT) ) then
    begin
      ShowMessage ('CTRL + Pfeil'); // Reagiert nicht !
      Handled := True;
    end
Danke
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Keypress Problem bei Setfocus

  Alt 12. Feb 2009, 19:25
Hallo Thomas,

ich sehe deine Ergänzung leider erst jetzt. Natürlich kannst du auch Kombinationen mit den Umschalttasten abfragen:

Delphi-Quellcode:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  Key : TShortCut;
begin
  Key := {Menus.}ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData));

  if (Key = scShift or VK_RIGHT) then
    begin
      ShowMessage ('Gotcha!');
      Handled := True;
    end;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Keypress Problem bei Setfocus

  Alt 12. Feb 2009, 19:37
Key Taste die zwölfte (oder waren es schon mehr) von thomas2009 ?
Blackheart
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#8

Re: Keypress Problem bei Setfocus

  Alt 18. Feb 2009, 14:26
Ich verstehe nicht, warum mit "or" funktioniert aber mit "and" nicht !
Delphi-Quellcode:
...
if (Key = scShift or VK_RIGHT) then
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Keypress Problem bei Setfocus

  Alt 18. Feb 2009, 14:36
die Pfeiltasten müssen über die entsprechende Message erlaubt werden wm_getdlgkey oder wo ähnlich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Keypress Problem bei Setfocus

  Alt 18. Feb 2009, 14:43
Moin Thomas,

in dem Beispiel sieht es so aus:
Code:
scShift = 8192 = 10000000000000 (bin)
VK_RIGHT =  39 =        100111 (bin)
Wenn jetzt diese Tasten gleichzeitig gedrückt werden, ist
Code:
Key = 8231 = 10000000100111 (bin)
da jetzt
Code:
scShift and VK_RIGHT = 0
ist (bei logischer Und-Verknüpfung werden alle Bits 1, die bei beiden Werten 1 sind, ansonsten wird's 0)
und
Code:
scShift or VK_RIGHT = 10000000100111
ist (bei logischer Oder-Verknüpfung werden alle Bits 0, die bei beiden Werten 0 sind, ansonsten wird's 1),
ist die Gleichheit nur bei OR gegeben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 02:26 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