/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
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

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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste