forum kurmak | ©phpBB | Bedava yardımlaşma forumu | Suistimalı göstermek | Bir bloga sahip olmak
ForumAlem

ForumAlem
 
AnasayfaAnasayfa  SSSSSS  AramaArama  Üye ListesiÜye Listesi  Kullanıcı GruplarıKullanıcı Grupları  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

Paylaş | 
 

 Klavye kontrolu adına bir kaç ipucu

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
ToPrAk
Admin
Admin
avatar

Mesaj Sayısı : 457
Kayıt tarihi : 05/08/08
Yaş : 28
Nerden : KONYA

MesajKonu: Klavye kontrolu adına bir kaç ipucu   Cuma Ağus. 08, 2008 6:11 pm

slm;
bu tuş konusunda bazı açıklamalar yapmam gerekiyor.
fonksiyon tuşlarını direk koduyla kullanamıyorsunuz.
kullanımı ile ilgili iki tane ornek program yazcam .
yalnız bazı açıklamalar yapmam lazım.
Size eksik kalan bazı kodlarıda yazayım.
#7 beep
#8 backspace
#71 home
#73 pageup
#79 end
#82insert
#83 delete
#81 pagedown

onksiyon tuşlarının asıl kodunun başında birde #0 vardır.

Daha sonra orneklere ekliycem ama şimdi size bir kopyasını yazdığım
bu programla fonksiyon tuşu olup olmadığını anlarsınız ve hafiften kodları
da veriyor.

uses crt;
var
kr:char;
begin
clrscr;
writeln('bir tusa basiniz');
repeat
kr:=readkey;
if kr=#0 then
begin
kr:=readkey;
writeln('( Fonksiyon tusu )',ord(kr));
end
else
writeln(ord(kr));
until kr=#27;
end.

burdaki kodu biraz inceleyin.
Çalıştırdığınızda bastığınız karakterin kodunu verir.
Fonksiyon tuşuysa belirtir.

Fonksiyon tuşlarının üstüne bukadar düşmemin sebebi aynı koda sahip başka
ascii karakterlenin olması.

size şimdide fonksiyon tuşunu kullanımına bir örnek yazıyorum.

uses crt;
var
a,b:char;
c:string;
function basilantus(kr:char):string;
begin
if kr=#0 then
begin
c:=";
kr:=readkey;
CASE kr of
#75: c:='Sol ok tusu';
#77: c:='Sag ok tusu';
#80: c:='Asagi ok tusu';
#72: c:='yukari ok tusu';
#59: c:='F1 Tusu';
#60: c:='F2 Tusu';
#61: c:='F3 Tusu';
#62: c:='F4 Tusu';
#63: c:='F5 Tusu';
#64: c:='F6 Tusu';
#65: c:='F7 Tusu';
#66: c:='F8 Tusu';
#67: c:='F9 Tusu';
#68: c:='F10 Tusu';
end
else c:=kr;
basilantus:=c;
end;

begin
clrscr;
writeln('Bir tusa basiniz');
repeat
a:=readkey;
clrscr;
writeln(basilantus(a));
until a=#27;

end.

Bu ornekte bir kaçtane ornek tuş var.

Capslook , ins , shift gibi tuşlar için
daha ozel bir koda ihtiyac vaR.


uses crt,dos;
var
cikis:boolean;
procedure ozeltuslar;

function ins_tusu:boolean;
begin
ins_tusu:=((mem[000:$417] and 128) <> 0);
end;
function num_tusu:boolean;
begin
num_tusu:=((mem[000:$417] and 32) <> 0);
end;
function caps_tusu:boolean;
begin
caps_tusu:=((mem[000:$417] and 64) <> 0);
end;
function shift_tusu:boolean;
begin
shift_tusu:=((mem[000:$417] and 3) <> 0);
end;
begin
if num_tusu then mem[$B800:100 +312]:=ord('N')
else mem[$B800:100 +312]:=32;
if ins_tusu then mem[$B800:100 +314]:=ord('I')
else mem[$B800:100 +314]:=32;
if caps_tusu then mem[$B800:100 +316]:=ord('C')
else mem[$B800:100 +316]:=32;
if shift_tusu then mem[$B800:100 +318]:=ord('S')
else mem[$B800:100 +318]:=32;

end;
begin
clrscr;
write('Cikis icin ');
cikis:=false;
repeat
ozeltuslar;
if keypressed and (readkey=#13) then cikis:=true;
until cikis;
end.

(
Ömer akgöbek in turbo pascal ve programlama sanatı
kitabı sayfa :465
)



Yukardaki kodu çalıştırınca capslook , numlook , shift ve ins ozel tuşlarının
durumunu öğrenebildiğimizi görceksiniz.

Yaptığınız projeye gore bu kodları düzenleyebilirsiniz.
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör
 
Klavye kontrolu adına bir kaç ipucu
Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ForumAlem :: Programlama Dilleri :: PascaL-
Buraya geçin: