Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi FMX Enter tuşu (dpad_center) yakalama
#1
Arkadaşlar,
Delphi FMX de Fiziksel klavyede Enter tuşuna basıldığında bu tuşu onkeydown ve onkeyup yönteminde alamıyorum. vkreturn basıldığına dair hiç bir değer gelmiyor.
Bu durumda Android cihazın Generic.kl dosyasını edit ederek dpad_center atamasını Enter olarak değiştirmem gerekiyor. Ancak bazı cihazlar root lu olduğu için bunu yapmak mümkün olmuyor. Android cihazın Generic.kl dosyasında dpad_center tanımı olsada fiziksel klavyede Enter tuşuna basıldığını nasıl yakalayabilirim.
Cevapla
#2
FMX mimarisinde Android ve iOS platformlarının tüm sınıf yapıları ortaktır.
Yapacağınız işlem ortaktır ve Android platformuna özgü herhangi bir şey yapmanıza gerek kalmaz. Fakat isterseniz platform direktifleri aracılığıyla istisnai işlemler de yapabilirsiniz. 

Gelelim çözüm önerisine;
1- Veri giriş bileşeninizin (edit, memo vb.) ReturnKeyType özelliğini Send olarak ayarlayın. 
2- Bileşenin OnKeyDown olayına şu kodu yazın.
  if Key in [vkReturn] then
 Begin
   case TEdit(Sender).ReturnKeyType of
     TReturnKeyType.Send:
       Memo1.Lines.Add('Enter');
   end;
 End;
Not: case ile ReturnKeyType kontrolüne gerek yok. Fakat olurda, Object Inspector'dan bu özelliği set etmezseniz, kod işlemesin ve işlememe nedenini anlayasınız diye yazdım.  

Yani şöyle de olabilir. 
if Key = vkReturn then
   Memo1.Lines.Add('Enter');
   
Begin : = end / 2;
Cevapla
#3
(20-03-2024, Saat: 14:31)RAD Coder Adlı Kullanıcıdan Alıntı: FMX mimarisinde Android ve iOS platformlarının tüm sınıf yapıları ortaktır.
Yapacağınız işlem ortaktır ve Android platformuna özgü herhangi bir şey yapmanıza gerek kalmaz. Fakat isterseniz platform direktifleri aracılığıyla istisnai işlemler de yapabilirsiniz. 

Gelelim çözüm önerisine;
1- Veri giriş bileşeninizin (edit, memo vb.) ReturnKeyType özelliğini Send olarak ayarlayın. 
2- Bileşenin OnKeyDown olayına şu kodu yazın.
  if Key in [vkReturn] then
 Begin
   case TEdit(Sender).ReturnKeyType of
     TReturnKeyType.Send:
       Memo1.Lines.Add('Enter');
   end;
 End;
Not: case ile ReturnKeyType kontrolüne gerek yok. Fakat olurda, Object Inspector'dan bu özelliği set etmezseniz, kod işlemsin ve işlememe nedenini anlaysınız diye yazdım.  

Yani şöyle de olabilir. 
if Key = vkReturn then
   Memo1.Lines.Add('Enter');


Öncelikle ilginize teşekkür ederim.
Kodla alakalı olarak sormak istediğim bu kod  Fiziksel klavyemi yoksa sanal klavyemi destekliyor. Benim Enter tuşunu yakalamaya çalıştığım kullanım şekli fiziksel klavye ve sanal klavye kapalı.
Cevapla
#4
(20-03-2024, Saat: 14:39)tarkancengiz Adlı Kullanıcıdan Alıntı:
(20-03-2024, Saat: 14:31)RAD Coder Adlı Kullanıcıdan Alıntı: FMX mimarisinde Android ve iOS platformlarının tüm sınıf yapıları ortaktır.
Yapacağınız işlem ortaktır ve Android platformuna özgü herhangi bir şey yapmanıza gerek kalmaz. Fakat isterseniz platform direktifleri aracılığıyla istisnai işlemler de yapabilirsiniz. 

Gelelim çözüm önerisine;
1- Veri giriş bileşeninizin (edit, memo vb.) ReturnKeyType özelliğini Send olarak ayarlayın. 
2- Bileşenin OnKeyDown olayına şu kodu yazın.
  if Key in [vkReturn] then
 Begin
   case TEdit(Sender).ReturnKeyType of
     TReturnKeyType.Send:
       Memo1.Lines.Add('Enter');
   end;
 End;
Not: case ile ReturnKeyType kontrolüne gerek yok. Fakat olurda, Object Inspector'dan bu özelliği set etmezseniz, kod işlemsin ve işlememe nedenini anlaysınız diye yazdım.  

Yani şöyle de olabilir. 
if Key = vkReturn then
   Memo1.Lines.Add('Enter');


Öncelikle ilginize teşekkür ederim.
Kodla alakalı olarak sormak istediğim bu kod  Fiziksel klavyemi yoksa sanal klavyemi destekliyor. Benim Enter tuşunu yakalamaya çalıştığım kullanım şekli fiziksel klavye ve sanal klavye kapalı.

Bileşen olayı (OnKeyDown), fiziksel veya sanal ayrımı yapmaz. 
Sonuçta veri giriş alanına gelen key tipine bakar.
Begin : = end / 2;
Cevapla
#5
(20-03-2024, Saat: 15:13)RAD Coder Adlı Kullanıcıdan Alıntı: Bileşen olayı (OnKeyDown), fiziksel veya sanal ayrımı yapmaz. 
Sonuçta veri giriş alanına gelen key tipine bakar.

Teşekkürler, deneyip sonucu bildireceğim.
Ancak bu edit ve memo bileşenlerinde çalışıyor sanırım.
Form onkeydown methodu  için çözüm varmıdır?
Delphi deki bu yaklaşımda ilginç geldi bana.
Cevapla
#6
(20-03-2024, Saat: 15:16)tarkancengiz Adlı Kullanıcıdan Alıntı:
(20-03-2024, Saat: 15:13)RAD Coder Adlı Kullanıcıdan Alıntı: Bileşen olayı (OnKeyDown), fiziksel veya sanal ayrımı yapmaz. 
Sonuçta veri giriş alanına gelen key tipine bakar.

Teşekkürler, deneyip sonucu bildireceğim.
Ancak bu edit ve memo bileşenlerinde çalışıyor sanırım.
Form onkeydown methodu  için çözüm varmıdır?
Delphi deki bu yaklaşımda ilginç geldi bana.

Form bir veri giriş bileşeni olmadığı için ve telefonuma / tabletime klavye bağlaymdığım için form KeyDown olayını test etme şansım yok. 
Tam olarak yapmak istediğiniz işlem nedir?
Begin : = end / 2;
Cevapla
#7
(20-03-2024, Saat: 15:24)RAD Coder Adlı Kullanıcıdan Alıntı:
(20-03-2024, Saat: 15:16)tarkancengiz Adlı Kullanıcıdan Alıntı: Teşekkürler, deneyip sonucu bildireceğim.
Ancak bu edit ve memo bileşenlerinde çalışıyor sanırım.
Form onkeydown methodu  için çözüm varmıdır?
Delphi deki bu yaklaşımda ilginç geldi bana.

Form bir veri giriş bileşeni olmadığı için ve telefonuma / tabletime klavye bağlaymdığım için form KeyDown olayını test etme şansım yok. 
Tam olarak yapmak istediğiniz işlem nedir?

Ben fiziksel klavye ile çalışan program yazdım,
fiziksel klavyeden basılan tuşa göre form onkeydown ve onkeyup methodları çalışıyor.
Cep telefonunda çalıştırılan bir uygulama değil.
Bunun çözümü yoksa ve örnek yazdığınız kodu çalıştırabilirsem tuş dinlemeyi Edit bileşenine değişiklik yaparak taşıma işlemide yapabilirim.
Cevapla
#8
Android cihazdan bahsetmişsiniz, mobil değil. Kiosk benzeri bir cihaz mı?
Begin : = end / 2;
Cevapla
#9
(20-03-2024, Saat: 15:45)RAD Coder Adlı Kullanıcıdan Alıntı: Android cihazdan bahsetmişsiniz, mobil değil. Kiosk benzeri bir cihaz mı?

Android Tv Box.
Cevapla
#10
(20-03-2024, Saat: 14:31)RAD Coder Adlı Kullanıcıdan Alıntı: FMX mimarisinde Android ve iOS platformlarının tüm sınıf yapıları ortaktır.
Yapacağınız işlem ortaktır ve Android platformuna özgü herhangi bir şey yapmanıza gerek kalmaz. Fakat isterseniz platform direktifleri aracılığıyla istisnai işlemler de yapabilirsiniz. 

Gelelim çözüm önerisine;
1- Veri giriş bileşeninizin (edit, memo vb.) ReturnKeyType özelliğini Send olarak ayarlayın. 
2- Bileşenin OnKeyDown olayına şu kodu yazın.
  if Key in [vkReturn] then
 Begin
   case TEdit(Sender).ReturnKeyType of
     TReturnKeyType.Send:
       Memo1.Lines.Add('Enter');
   end;
 End;
Not: case ile ReturnKeyType kontrolüne gerek yok. Fakat olurda, Object Inspector'dan bu özelliği set etmezseniz, kod işlemesin ve işlememe nedenini anlayasınız diye yazdım.  

Yani şöyle de olabilir. 
if Key = vkReturn then
   Memo1.Lines.Add('Enter');


Konu sanal klavye ile Enter tuşu yakalama değil, Fiziksel klavye ile Enter tuşunu yakalama. Generic.kl de key 28 DPAD_CENTER geldiği için delphi bunu yakalamıyor ve VKreturn diye bir şey dönmüyor. Sorunu çözdüm ama çok farklı bir yöntemle.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi FMX - Modern Android Bileşen ve Tema Yapılandırması | Rehber Mr.X 0 201 29-06-2026, Saat: 13:44
Son Yorum: Mr.X
  Çözüldü _ Delphi Community Edition SDK ayarları hatası cinarbil 2 707 08-06-2026, Saat: 16:22
Son Yorum: emailx45
  Delphi FMX, geliştirdiğiniz uygulamanın log kaydını alma işlemi muratcelik64 3 476 22-03-2026, Saat: 05:00
Son Yorum: ovural
  Delphi FMX ile geliştirilen projenin yedeğini alma işlemi. muratcelik64 1 275 15-03-2026, Saat: 20:43
Son Yorum: mkysoft
  Delphi 13 - Listbox içerisinde yatay kaydırma çalışmıyor Mr.X 2 627 18-10-2025, Saat: 13:11
Son Yorum: Mr.X



Konuyu Okuyanlar: 1 Ziyaretçi