Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

FormKeyDown kodovi?

[es] :: Pascal / Delphi / Kylix :: FormKeyDown kodovi?

[ Pregleda: 3854 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon FormKeyDown kodovi?17.09.2004. u 17:01 - pre 238 meseci
FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState)

Kako je ispravno pretvoriti Word u char? Ja sam uradio Chr(Ord(Key)) i to radi.
Ali imam sledeći problem: ne radi dobro sa tasterima van opsega alfanumeričkih, na primer - = \ / . , itd... Daje neke totalno lude kodove.
Znam da sa KeyPress radi dobro, ali kad mi već treba KeyDown, zbog VK_LEFT i slično, zašto da pravim dva handle-ra...
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
212.62.58.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: FormKeyDown kodovi?17.09.2004. u 19:03 - pre 238 meseci
odi u help i na Find ukucaj VK_ i izbacice ti listu kodova, ima za sve
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?17.09.2004. u 19:37 - pre 238 meseci
Na žalost, neče! Postoje VK_ kodovi samo za speciajlne tastere. Kažu kako bi VK_ kod za npr. taster 'a' trebao da bude ord('A'), ali nije baš tako.
Hteo bih to da iskoristim na sledeći način:
(var s: string;)
s := s + Key;
ali neće da ga doda jer Key nije odgovarajućeg tipa.
Probao sam i nekim WordToStr ali sa njim dobijam isti rezulatat.
Dakle, fora je u tome što se kroz Key ne prosleđuje dobar kod kada su u pitanju prethodnonavedeni znaci, dok za sve alfanumeričke karaktere lepo radi:
s := s + Chr(Ord(Key));
mada ne izgleda baš najlepše.

 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
217.119.242.*



+62 Profil

icon Re: FormKeyDown kodovi?18.09.2004. u 11:29 - pre 238 meseci
Hm...aj jos jednom pazljivo procitaj svoj zadnji post.
String je niz karaktera, je li tako? Kad pritisnes taster F1, ti hoces da nakalemis na kraj stringa STA? Mislim, otkud ti uopste ideja da taster F1 'znaci' neki karakter, ili mozda BACKSPACE ili DELETE ili sta vec hoces? Prema tome, ako radis sa stringom, onda se drzi eventa OnKeyPress i onoga sto njim dobijes.
A ako zelis da zapisujes redosled kako je neko pritiskao tastaturu, onda se mani stringa, i koristi neki dinamicki array VK kodova. Ok?

Rajko
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
212.62.58.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: FormKeyDown kodovi?18.09.2004. u 12:55 - pre 238 meseci
pa da ord(A) je key code za taster A, vk_return je za enter i to...stvarno nema potrebe da pravis string od toga.
lepo na on keydown stavi
Code:

case Key of
...
end;

sta uopste hoces da postignes?
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?19.09.2004. u 08:15 - pre 238 meseci
Citat:
Hm...aj jos jednom pazljivo procitaj svoj zadnji post.

Polako momci, obustavite paljbu :)
(nestrpljivi nek pročitaju samo poslednji pasus)
Situacija je sledeća. Imaš polje koje pokazuje jedan elemenat iz neke liste - radi se o bazi. Želiš da odabereš jedan tako što kucaš početna slova ili znake. Npr. 'TR.A78-0'. Šta sam ja uradio: ti pritisneš T, on pošalje upit bazi i vrati prvi koji počinje na T. To ti se pojavljuje u edit box-u. U jednoj posebnoj promenljivi se čuva to 'T'. Sad kucaš R, on dodaje na tu promenljivu R, dobijamo 'TR', šaljemo bazi itd...
Fora je u tome što osim toga želim da na kursorskim tasterima može da dobije npr. prvi sledeći ili prvi prethodni, znači treba mi obrada VK_UP, VK_DOWN i da može da obriše poslednji uneti karakter sa VK_BACK.
Šta se dešava kada neko pritisne F1 ili bilo šta drugo? Ja pošaljem bazi 'T(F1)' ona kaže nema ništa što počinje tako i ja lepo obrišem poslednji "karakter" i vraćam ga na 'T'. Sve to funkcioniše kako valja, ali sam morao da napišem dva handlera za tako slične stvari.
Još uvek mi niko nije objasnio zašto su kodovi ok za svu alfanumeriku a sluđeni za tako proste stvari kao . , - i sl?
Ideja za niz kodova je ok, ali mi to znači isto koliko i string (u stvari manje). Ja i dalje ne znam šta je on pritisnuo ako ne mogu da raspoznam kodove. A dodaj tome i to što mi je potrebna neka automatizacija: pa ne mogu za svaki taster da pitam: da li si ti tačka ili zarez ili crta ili slovo ili bogtepitašta. Imao bih case sa bezbroj stavki...

Da pojednostavimo:

1. da li neko zna kako da u OnKeyDown prepoznam znake iz skupa {.,/\-} ?
(odgovor tipa 'koristi OnKeyPress' se ne prihvata :)
to što sada znam da je VK('.')=190 a VK(',')=188 me nije baš usrećilo...
2. da li postoji mogućnost da se to automatizuje, tj. da ne moram da proveravam posebno za svaki?
 
Odgovor na temu

filjo

Član broj: 17551
Poruke: 136
*.co.yu



+1 Profil

icon Re: FormKeyDown kodovi?19.09.2004. u 09:45 - pre 238 meseci

Naterao si me malo da procackam i ako sam te dobro shvatio ovako stoje stvari:

Koliko ja vidim ti presreces dogadjaj onKeyDown koji ti nece ako malo bolje pogledas dati ni isti broj (Key) za "1" na num i "1" na alfanum tastaturi. Takodje ni za "/" i "/" na numerickoj tako da bi to trebalo bataliti. Dadadaaaam evo i resenja:

Koristi dogadjaj OnKeyPress

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

koji ce ti dati u Key ispravan kod.A u KeyDown ili KeyUp presreces samo gore,dole i del ili sta ti vec treba.

Pa zasto je onda onKeyDown i onKeyUp? Te procedure se pozivaju kada se pritisne taster, a pre otpustanja istog (prva procedura) i nakon otpustanja tastera (druga procedura).

Nadam se da sam ti malo pomogao. Znaci preseli ceo kod u onKeyPress i gotovo.
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?19.09.2004. u 11:36 - pre 238 meseci
filjo, hvala na odgovoru (i pozitivnom stavu :) ali veće rekoh da sam to rešio i to upravo sa OnKeyPress.
Uzmi dalje u obzir da će ti OnKeyPress uvek dati dobar karakter bez obzira 'de ga stiskaš. Pa, reko', ako on zna što ne bi' i ja to znao. Bez obzira što je tačno da neki isti znakovi imaju različite kodove...
 
Odgovor na temu

filjo

Član broj: 17551
Poruke: 136
*.co.yu



+1 Profil

icon Re: FormKeyDown kodovi?19.09.2004. u 11:47 - pre 238 meseci
Koliko se secam ti key-kodovi postoje jos od prvog Borlandovog pascala sa OO programiranjem, ali je to Borland takodje tada resavao sa "case Key" a tako je verovatno i sada pa ti ne vredi da se zamaras puno oko toga.


Pozdrav!
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
217.119.242.*



+62 Profil

icon Re: FormKeyDown kodovi?20.09.2004. u 07:42 - pre 238 meseci
Sad kad si malo pojasnio sta ti treba, da ti kazem: i ne moze drugacije nego sa dva handler-a. Evo ti primer: VK code za malo 'a' i veliko 'A' je isti - 65. Prema tome, VK code je jednoznacni broj za svaki taster na tastaturi i nista vise (ni manje) od toga. Ako ti treba da iz OnKeyDown provalis da li je malo ili veliko 'a', izvoli pa parsiraj Shift itd. itd.. Ako zelis da bez po muke dobijes karakter (ako ga ima), pa sistem se potrudio da ti to isparsira - OnKeyPress. To je sva nauka.

Rajko
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?20.09.2004. u 17:14 - pre 238 meseci
Ok je to za velika i mala slova, mada naravno i to može da se reši sa shift state-om koji se valjda i prosleđuje kroz handler. Ali to je nebitno u mojoj situaciji jer SQL query ne razlikuje mala i velika slova. Tako da je svejedno da li ću poslati 'A' ili 'a' za upit.

Nije mi jasno što me svi ubeđuju da je sistem sve lepo odradio za mene i šta ja sad izvodim sa tim: hoću jedan handler pa jedan... Mislim, pitanje više nije od nikakvog značaja, jer sam ja rešio problem još pre nego što sam postavio ovde pitanje. Ali me zaista interesuje kako da u jednom, opštijem, handleru odradim i ono što može nesumnjivo u specijalizovanom. Razumeo bih da OnKeyDown šalje samo specijalne tastere. Ali gubi se smisao ako ja ne mogu da prepoznam ono što je poslato - što još niko nije odgovorio kako se radi, dakle niko još to nije ni pokušao.

Malo mi je ipak čudno: imaš handler koji ti šalje informaciju o pritisnutom (every fuckin') tasteru, a ti ga koristiš samo za specijalne tastere. A onda pišeš poseban handler za alfanumeriku, iako tu informaciju već imaš u prvom, ali je ne koristiš jer ne znaš kako?
Kao: evo, mi imamo ovu veš mašinu koja radi sve radnje ali ne znamo kako da je nateramo da iskuva veš... eeee, ali zato imamo ovu pokvarenu koju ne možeš da nateraš da ne kuva i tako...
 
Odgovor na temu

filjo

Član broj: 17551
Poruke: 136
*.co.yu



+1 Profil

icon Re: FormKeyDown kodovi?20.09.2004. u 18:13 - pre 238 meseci
Ako ti to nije jasno sedi malo vise, a pisi malo manje!

Nismo ti mi krivi sto ides glavom kroz zid.

Kad pogledas, kad razmislis - kasce ti se samo.

Pozdrav.
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?20.09.2004. u 21:23 - pre 238 meseci
comment:
Hm, moram da primetim da, pored gomile dobrih saveta, još niko nije odgovorio na moje pitanje... Glavom kroz zid ne idem, jer sam postigao željeni rezultat, tj. program radi ono što treba. Pitanje je čisto radoznalosti radi, ali nisam imao pojma da će to izazvati toliko buke...

Citat:
Ako ti to nije jasno sedi malo vise, a pisi malo manje!

Stvari su mnogo prostije: moje pitanje nije nastalo zbog toga što mi nešto nije bilo jasno, već zato što nešto ne znam (a to su gorepomenuti kodovi). Nisam video da je neko rekao da zna...

Kog' mrzi da čita duge post-ove, nek' ih ne čita, ali ne vidim kako onda može kompetentno da odgovara...
 
Odgovor na temu

filjo

Član broj: 17551
Poruke: 136
*.co.yu



+1 Profil

icon Re: FormKeyDown kodovi?20.09.2004. u 21:55 - pre 238 meseci
Izvinjavam se.
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 425
*.bih.net.ba.



+27 Profil

icon Re: FormKeyDown kodovi?22.09.2004. u 23:31 - pre 238 meseci
U Help-u pod 'Virtual key codes' piše ovo:

"For alphabetic keys, you should use ord with an uppercase character, for example, ord( 'M' )."
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: FormKeyDown kodovi?23.09.2004. u 07:20 - pre 238 meseci
Da, i to funkcioniše.
Ali nigde ne piše zašto šalje 190 za pritisnuto '.' iako je Ord('.')=46 i tsl. U stvari i nije toliko bitno zašto, ako bi imao sve te kodove.

E, ako me ne mrzi, ima da zapišem sve ove kodove i napravim jedan fajl sa svim takvim VK kodovima, kao što postoji u VS dokumentaciji: npr. za zarez VK_COMMA za tačku VK_PERIOD itd. Ili još bolje da se napravi funkcija koja radi konverziju...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: FormKeyDown kodovi?

[ Pregleda: 3854 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.