|
| Få navne på tasterne Fra : Thomas Due |
Dato : 08-06-01 12:54 |
|
Hejsa,
Er der nogen som er klar hvordan man får navnet på en nedtrykket
tast frem. F.eks. jeg trykker på venstre pil, og så bliver der
skrevet "LEFT ARROW" eller "VENSTRE PIL", afhængigt af ens locale.
Jeg har en mistanke om at det er GetKeyNameText api kaldet jeg skal
bruge, men jeg kan ikke gennemskue hvad det er der mangler.
Hjælp vil være værdsat,
Mvh
Thomas Due
| |
FreeAll (08-06-2001)
| Kommentar Fra : FreeAll |
Dato : 08-06-01 23:23 |
|
Du kan jo checke ved at bruge VK_LEFT, VK_RIGHT, men der er sikkert noget
smartere som fylder en Liste med alle værdier.
--
- FreeAll (freeall@freeall.dk <> www.freeall.dk)
"Thomas Due" <tdue@eon.dk> wrote in message
news:8fa5d0f1.0106080353.58b3e815@posting.google.com...
> Hejsa,
>
> Er der nogen som er klar hvordan man får navnet på en nedtrykket
> tast frem. F.eks. jeg trykker på venstre pil, og så bliver der
> skrevet "LEFT ARROW" eller "VENSTRE PIL", afhængigt af ens locale.
>
> Jeg har en mistanke om at det er GetKeyNameText api kaldet jeg skal
> bruge, men jeg kan ikke gennemskue hvad det er der mangler.
>
> Hjælp vil være værdsat,
>
> Mvh
> Thomas Due
| |
Robert Bauck Hamar (10-06-2001)
| Kommentar Fra : Robert Bauck Hamar |
Dato : 10-06-01 16:16 |
|
tdue@eon.dk (Thomas Due) skreiv:
| Hejsa,
|
| Er der nogen som er klar hvordan man får navnet på en nedtrykket
| tast frem. F.eks. jeg trykker på venstre pil, og så bliver der
| skrevet "LEFT ARROW" eller "VENSTRE PIL", afhængigt af ens locale.
|
| Jeg har en mistanke om at det er GetKeyNameText api kaldet jeg skal
| bruge, men jeg kan ikke gennemskue hvad det er der mangler.
Du har helt rett, men event-handlerne i Delphi er litt mangelfulle;
Parameteret Key inneholder virtual-key'en for eventet (som kommer med
wParam). Vi må override message-handleren, slik:
type
TForm1 = class(TForm)
procedure Key(var msg: TMessage); message WM_KEYDOWN;
end;
....
procedure TForm1.Key(var msg: TMessage);
var
Navn: array[0..100] of char;
begin
GetKeyNameText(msg.LParam, Navn, 100);
MessageBox(0, Navn, 'Test', 0);
inherited;
end;
Håper det hjelper.
--
Robert Bauck Hamar
| |
Thomas Due (10-06-2001)
| Kommentar Fra : Thomas Due |
Dato : 10-06-01 19:08 |
|
Hejsa,
Jo det hjælper lidt, men jeg kan ikke sådan lige få den til at skrive i en
TEdit.
Jeg går ud fra at jeg skal override eventen handleren for Tedit feltet. Men
så
bliver jeg vel nødt til at lave min egen komponent?
Mvh
Thomas
"Robert Bauck Hamar" <hamrob_b@yahoo.no> wrote in message
news:c047it0g52ttklf2l38gaa8k0mj9s71mh9@4ax.com...
> tdue@eon.dk (Thomas Due) skreiv:
>
> | Hejsa,
> |
> | Er der nogen som er klar hvordan man får navnet på en nedtrykket
> | tast frem. F.eks. jeg trykker på venstre pil, og så bliver der
> | skrevet "LEFT ARROW" eller "VENSTRE PIL", afhængigt af ens locale.
> |
> | Jeg har en mistanke om at det er GetKeyNameText api kaldet jeg skal
> | bruge, men jeg kan ikke gennemskue hvad det er der mangler.
>
> Du har helt rett, men event-handlerne i Delphi er litt mangelfulle;
> Parameteret Key inneholder virtual-key'en for eventet (som kommer med
> wParam). Vi må override message-handleren, slik:
>
> type
> TForm1 = class(TForm)
> procedure Key(var msg: TMessage); message WM_KEYDOWN;
> end;
>
> ...
>
> procedure TForm1.Key(var msg: TMessage);
> var
> Navn: array[0..100] of char;
> begin
> GetKeyNameText(msg.LParam, Navn, 100);
> MessageBox(0, Navn, 'Test', 0);
> inherited;
> end;
>
> Håper det hjelper.
> --
> Robert Bauck Hamar
| |
Thomas Due (11-06-2001)
| Kommentar Fra : Thomas Due |
Dato : 11-06-01 08:08 |
|
Hej,
En anden ting som jeg alternativt godt kunne tænke mig, men som
jeg heller ikke lige kan gennemskue, er at få alle taste navnene
ind i en ListBox eller ComboBox. Der kan man så vælge den tast
man nu vil bruge, og så kan jeg så aflæse i object, eller index,
eller et eller andet hvad det er for en tast der er valgt.
Jeg håber der er nogen som kan hjælpe med det.
Mvh
Thomas Due
| |
Robert Bauck Hamar (12-06-2001)
| Kommentar Fra : Robert Bauck Hamar |
Dato : 12-06-01 21:53 |
|
"Thomas Due" <myth@mail1.stofanet.dk> skreiv:
| Hejsa,
|
| Jo det hjælper lidt, men jeg kan ikke sådan lige få den til at skrive i en
| TEdit.
| Jeg går ud fra at jeg skal override eventen handleren for Tedit feltet. Men
| så
| bliver jeg vel nødt til at lave min egen komponent?
Jepp. Jeg må si jeg er sterkere i API'et enn i Delphi-klassene, men
det skulle vel ikke være altfor vanskelig? Til opplysning:
For en WM_KEYDOWN og en WM_KEYUP melding, ser Tmessage-parameteren
slik ut:
msg - WM_KEYDOWN eller WM_KEYUP (ev. WM_SYSKEYDOWN og WM_SYSKEYUP)
wParam - Virtual keycode
lParam |
+ lParamLo - Repeat count.
+ lParamHi and $FF - OEM scan code. (Noe for en DOS-fan)
+ lParamHi and $2000 - Context code. $2000 for SYS-messages.
+ lParamHi and $4000 - Previous key state $4000 hvis det er en
autorepeat.
+ lparamHi and $8000 - Transition state 0 for -DOWN-messages.
Du kan også bruke WM_CHAR - messagen. Den har samme lParam, men wParam
er alltid et utskrivbart tegn.
--
Robert Bauck Hamar
| |
|
|