s.a. arkadaşlar.
Yazdığım programda kullanıcıya kısayol tanımlama yetkisi verdim.
Program çalışıyor ancak Kısayola "Shift+A" tanımlarsa keydown olayına yazdığım kod çalışıyor birde aktif kontole "A" yazıyor.
Shift yerine "Alt" veya "Ctrl" olursa problem yok.
size bu problemi nasıl çözebilirim.
Shift tuşu kısayol olursa
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Shift tuşu kısayol olursa
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Shift tuşu kısayol olursa
Aşagıdakine benzer kodla yapabilirsin.
Bir ek yapayım, shift ile büyük harf de yazıldıgından formda text girişleri varsa, shift ile kısayol kullanma pek dogru görünmüyor.
Kod: Tümünü seç
procedure TForm5.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key= ..) and shift in [...] then
begin
callprocedure;
key:=0; // işlemi yaptik key i sıfırla silebiliriz.
end;
.....
end;
Re: Shift tuşu kısayol olursa
yazdığım kod zaten yukardakine benzer şekilde.
yani keydown da keyi sıfırlıyorum. ancak tahminimce keypres ve keyup eventlerinden birinde tuşu yakaladığı için ekrana basıyor.
Kısayol tuşlarını ben değil kullanıcılar belirliyor.
CTRL,ALT,SHIFT tuşlarından birini seçiyorlar ancak görünüşe bakılırsa shift tuşunu listeden kaldırmak gerekecek.
yada SHIFT i seçen tuşuna katlanacak.
yani keydown da keyi sıfırlıyorum. ancak tahminimce keypres ve keyup eventlerinden birinde tuşu yakaladığı için ekrana basıyor.
Kısayol tuşlarını ben değil kullanıcılar belirliyor.
CTRL,ALT,SHIFT tuşlarından birini seçiyorlar ancak görünüşe bakılırsa shift tuşunu listeden kaldırmak gerekecek.
yada SHIFT i seçen tuşuna katlanacak.

Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Shift tuşu kısayol olursa
Shift i kaldırmak kesin çözüm,
Shift seçildiğinde Rakamlar ile bağlayarak kısayol tanımlanabilir.
0-9
Shift seçildiğinde Rakamlar ile bağlayarak kısayol tanımlanabilir.
0-9
Bir kelimenin anlamını öğretsen bile yeter..



Re: Shift tuşu kısayol olursa
Eger bir karakter tuşuna basılırsa, hem keypress hem de keydown eventleri oluşur.
Sanırım edit kutuları onkeypress den gelen bilgiyi yazıyorlar, OnKeypress i bakarak, basılan tuş bir shortcut ise oradan silebilirsin.
Sanırım edit kutuları onkeypress den gelen bilgiyi yazıyorlar, OnKeypress i bakarak, basılan tuş bir shortcut ise oradan silebilirsin.
Re: Shift tuşu kısayol olursa
@conari; Rakamlar kullanıldığı zaman ikinci karakterler basılıyor.
@emin_as;bende öyle olduğunu düşünüyorum ancak onkeypress olayında ShiftState parametresi yok. sadece key var.
bu durumda üçüncü bir değişken kullanmak gerekecek gibi görünüyor.
EK:
kisayolbasildi = Boolean bir değişken. keydown da set ediliyor.
ile sorun çözüldü.
@emin_as;bende öyle olduğunu düşünüyorum ancak onkeypress olayında ShiftState parametresi yok. sadece key var.
bu durumda üçüncü bir değişken kullanmak gerekecek gibi görünüyor.
EK:
Kod: Tümünü seç
if kisayolabasildi then
begin
key:=#0;
kisayolbasildi:=false;
end;
ile sorun çözüldü.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Shift tuşu kısayol olursa
Evet keypress e sadece yazılabilecek karakterler gönderilir. Eger shift durumu ögrenmek istiyorsan, getkeystate i kullanabilirsin.
Kod: Tümünü seç
if hiword(getkeystate(vk_shift)) <> 0 then
......