AGB  ·  Datenschutz  ·  Impressum  







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

WM_KEYDOWN wird nicht ausgelößt

Ein Thema von EWeiss · begonnen am 7. Mai 2011 · letzter Beitrag vom 16. Jan 2013
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

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

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 05:44
Öhm und wo wird denn da der Keycode geholt ?

Also ala:
Delphi-Quellcode:
WM_KEYDOWN:
    begin
      myKeyCode := wParam
    end;

Ist doch wohl bei dir nonVCL oder ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 05:46
Öhm und wo wird denn da der Keycode geholt ?

Also ala:
Delphi-Quellcode:
WM_KEYDOWN:
    begin
      myKeyCode := wParam
    end;

Ist doch wohl bei dir nonVCL oder ?
Jo..
Delphi-Quellcode:
case wp of
        VK_SHIFT:
Aber er kommt nicht in WM_KEYDOWN rein das ist mein Problem

Also nicht das wir jetzt was verwechseln..
Ich meine nicht die Keys also Tasten auf dem Piano..

Sondern die von meiner Tastatur!

gruss

Geändert von EWeiss ( 7. Mai 2011 um 05:52 Uhr)
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#3

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 05:54
Hallo EWeiss,

ist es nonVCL? Ich habe es sonst in der VCL durchgespielt und es funktioniert: (ich habe es so angepasst, dass mir die Form1.Caption die gedrückten Tasten anzeigt)

Delphi-Quellcode:
procedure PlayStopKeyNote(KeyNote: Integer; State: TShiftState);
begin
  case KeyNote of
    VK_LEFT:
      Form1.Caption := 'Left'; // Left
    VK_RIGHT:
      Form1.Caption := 'Right'; // Right
    VK_UP:
      Form1.Caption := 'Up'; // Up
    VK_DOWN:
      Form1.Caption := 'Down'; // Down
    VK_RETURN:
      Form1.Caption := 'Return'; // Return
  else
    Exit;
  end;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  PlayStopKeyNote(Key, Shift);
end;
Thomas
Thomas
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 05:59
Hallo EWeiss,

ist es nonVCL? Ich habe es sonst in der VCL durchgespielt und es funktioniert: (ich habe es so angepasst, dass mir die Form1.Caption die gedrückten Tasten anzeigt)

Delphi-Quellcode:
procedure PlayStopKeyNote(KeyNote: Integer; State: TShiftState);
begin
  case KeyNote of
    VK_LEFT:
      Form1.Caption := 'Left'; // Left
    VK_RIGHT:
      Form1.Caption := 'Right'; // Right
    VK_UP:
      Form1.Caption := 'Up'; // Up
    VK_DOWN:
      Form1.Caption := 'Down'; // Down
    VK_RETURN:
      Form1.Caption := 'Return'; // Return
  else
    Exit;
  end;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  PlayStopKeyNote(Key, Shift);
end;
Thomas
Lieber madtom
Danke für dein Beispiel
Aber ich sagte schon alle Tasten funktionieren nur diese 5 nicht.

Wenn ich den Focus erzwinge..

Delphi-Quellcode:
        // Focus für Tasten Eingaben
        ID_USEKEY:
        begin
          if UseKey then
            SKAERO_SetCheckButtonStatus(SKAERO_GetMainItem(MainHandle, ID_USEKEY), False);

          UseKey := not UseKey;
          SetFocus(MainHandle);
        end;
Dann funktionieren alle Tasten die ich angegeben habe um auf dem Piano zu spielen
Aber nicht VK_RIGHT, VK_LEFT, VK_UP, VK_DOWN, VK_RETURN

gruss
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

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

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 06:13
@EWeiss, ja aber irgend wo musst doch "wp" den Tastencoder erhalten vom WM_KEYDOWN oder nicht ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#6

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 06:33
Hallo EWeiss,

Für mich liest sich das so, als ob etwas noch mit dem Key Event Handling noch im Argen ist. Manche Botschaften (ich glaube auch VK_RETURN...) werden unter Umständen an das ParentControl weitergeleitet und müssen dann anders gehandelt werden. Frag doch mal unsere Spezialisten (Daniel, Luckie ...)

Viel Erfolg

Thomas
Thomas
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 7. Mai 2011, 06:43
@EWeiss, ja aber irgend wo musst doch "wp" den Tastencoder erhalten vom WM_KEYDOWN oder nicht ?
Danke das wars..
Bin davon ausgegangen, da es mit allen Tasten funktioniert hat bisher, das ich die Tasten weiterhin über die Main WinProc verwalten kann.
So wie es aussieht geht es aber nicht.

Deshalb habe ich die beiden Messagen jetzt in meiner SuperClassing WinProc durchgeschleift..

Jetzt funktionieren die Keys.
Up,Down,left,right und enter scheinen keine WM_KEYDOWN Message auszulösen
deshalb war es schon richtig das ich meine Funktionen in WM_KEYUP weiterleite und verarbeite.
Muss das also wieder ändern.

Delphi-Quellcode:
      WM_KEYDOWN:
        SendMessage(GetParent(WinHandle), WM_KEYDOWN, wp, lp);

      WM_KEYUP:
        SendMessage(GetParent(WinHandle), WM_KEYUP, wp, lp);
gruss
  Mit Zitat antworten Zitat
Moebius97

Registriert seit: 1. Jul 2010
4 Beiträge
 
Delphi 2 Desktop
 
#8

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 14. Feb 2012, 10:08
Hi hi,
ist zwar schon durch, aber fürs protokoll:
jemand hat woanders ausprobiert, das die bezeichneten Tasten mit WM_SYSKEYDOWN auch durchgereicht werden. Das übenrimmt dann also ALLE Tasten...

Mario
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: WM_KEYDOWN wird nicht ausgelößt

  Alt 16. Jan 2013, 04:32
Hi hi,
ist zwar schon durch, aber fürs protokoll:
jemand hat woanders ausprobiert, das die bezeichneten Tasten mit WM_SYSKEYDOWN auch durchgereicht werden. Das übenrimmt dann also ALLE Tasten...

Mario
Ist zwar schon ein bisschen her, aber will trotzdem nochmal dazu was sagen:
Also das es an WM_SYSKEYDOWN liegt ist eher unwahrscheinlich.

Ich denke das Emil bestimmt in dem Message Handler auf IsDialogMessage zugreift?!
Wenn dem so ist, musst du VK_RETURN und die Pfeiltasten mit WM_GETDLGCODE abfangen!
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  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 16:40 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