AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TMessage, welche Taste wurde gedrückt?
Thema durchsuchen
Ansicht
Themen-Optionen

TMessage, welche Taste wurde gedrückt?

Ein Thema von tofse · begonnen am 25. Feb 2013 · letzter Beitrag vom 26. Feb 2013
Antwort Antwort
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

TMessage, welche Taste wurde gedrückt?

  Alt 25. Feb 2013, 15:55
Hallo,

wie bekomme ich bei
Code:
procedure WmMenuChar(var m : TMessage); message WM_MENUCHAR;
heraus, welche Taste gedrückt wurde?
In
Code:
var m : TMessage
muss doch irgendwo, irgendwie die Taste als Code enthalten sein

Danke
Gruss
Christof
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TMessage, welche Taste wurde gedrückt?

  Alt 25. Feb 2013, 15:57
Microsoft erklärt in der MSDN wo welche Infos zu finden sind:
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#3

AW: TMessage, welche Taste wurde gedrückt?

  Alt 25. Feb 2013, 16:09
Hallo,
danke!
Da steht:
Zitat:
wParam
The low-order word specifies the character code that corresponds to the key the user pressed.
Also verwende ich: m.WParamLo

Außerdem habe ich diese Funktion gefunden:
Code:
function GetCharFromVKey(vkey: Word): string;
var
  keystate: TKeyboardState;
  retcode: Integer;
begin
  Win32Check(GetKeyboardState(keystate));
  SetLength(Result, 2);
  retcode := ToAscii(vkey,
    MapVirtualKey(vkey, 0),
    keystate, @Result[1],
    0);
  case retcode of
    0: Result := ''; // no character
    1: SetLength(Result, 1);
    2:;
    else
      Result := ''; // retcode < 0 indicates a dead key
  end;
end;
Verwende ich nun
Code:
GetCharFromVKey(m.WParamLo)
dann funktioniert es bei den Zahlen, aber wenn ich eine Buchstabentaste drücke, dann kommt meistens nichts zurück

Gruss
Christof
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

AW: TMessage, welche Taste wurde gedrückt?

  Alt 25. Feb 2013, 16:12
Code:
procedure WmMenuChar(var m : TMessage); message WM_MENUCHAR;
Nimm doch TWMMenuChar statt TMessage . Dann brauchst du weniger Casts.
Uli Gerhardt
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: TMessage, welche Taste wurde gedrückt?

  Alt 25. Feb 2013, 16:15
Wozu GetCharFromVKey?

Code:
procedure TForm1.WmMenuChar(var m: TMessage);
var
  s: string;
begin
  s := chr(m.WParamLo);
  ShowMessage(s);
end;
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#6

AW: TMessage, welche Taste wurde gedrückt?

  Alt 26. Feb 2013, 07:28
Danke
wozu getcharfromvkey?

Code:
procedure tform1.wmmenuchar(var m: Tmessage);
var
  s: String;
begin
  s := chr(m.wparamlo);
  showmessage(s);
end;
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#7

AW: TMessage, welche Taste wurde gedrückt?

  Alt 26. Feb 2013, 08:04
Danke
wozu getcharfromvkey?

Code:
procedure tform1.wmmenuchar(var m: Tmessage);
var
  s: String;
begin
  s := chr(m.wparamlo);
  showmessage(s);
end;
Obwohl mein erster Post irgendwie keinen interessiert hat, probier ich's nochmal. Die VCL bietet ja vorgefertigte "Message-Cracker". Damit kann man mit sinnvollen Namen und ohne Casten auf die Message-Parameter zugreifen:
Delphi-Quellcode:
procedure TForm1.WMMenuChar(var m: TWMMenuChar);
var
  s: string;
begin
  s := m.User;
  ShowMessage(s);
end;
(OK, "User" ist jetzt kein soooo sinnvoller Name... )
Uli Gerhardt
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#8

AW: TMessage, welche Taste wurde gedrückt?

  Alt 26. Feb 2013, 08:10
ok, funktioniert auch, habe dann diese Variante eingebaut
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

AW: TMessage, welche Taste wurde gedrückt?

  Alt 26. Feb 2013, 13:21
Das ist aber nicht ganz das was du gefragt hast, oder? Die Message liefert dir nicht die Taste welche gedrückt wurde sondern nur das Zeichen welches daraus resultiert.
Nimmt man zum Beispiel die Zifferntasten weißt du dann nicht ob die Ziffer auf dem Nummernblock getippt wurde oder die andere Taste.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#10

AW: TMessage, welche Taste wurde gedrückt?

  Alt 26. Feb 2013, 13:23
Das stimmt natürlich, aber eigentlich ging es mir auch nur um's Zeichen....
  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 06:30 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