Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Virtual Klavye Gizleme
#1
Merhaba arkadaşlar. Bir problemim için rahatsız ediyorum sizi. Belki de algoritmasını kurgulayamadım fakat denemediğim bir şey kalmadı. Akıl akıldan üstündür diyip sizlere danışmak istedim.

Anroid cihazlar için bir Fiyat Gör uygulaması yazdım. 

form da 2 adet Edit var. 

Edit1: Barkodun okutulduğu kısım, 
Edit2: Sunucu IP vs. girilen kısım. 

Problem burada başlıyor. Edit 2 de klavyenin gösterilmesi gerekiyor Çünki infolar buradan yazılmak zorunda. Fakat her barkod okutmada (Zxing yada andrd fiyat görün okuyucusu ile) Edit1 in Virtual Keyboardının görünmemesi gerekiyor. Çünkü edit1 enter yada setfocus yapıldığında klavye ekrana gelir ise ekranı kaplıyor ve nahoş bir görüntü ortaya çıkıyor. 

Problemim de aynen burada başlıyor. Her hangi bir şekilde edit1.enter yapıldığında yada setfocus yapıldığında imleç enter yapsa dahi klavyenin edit1 üzerinde çıkmaması gerekiyor.

Neler denedim: 
Edit1.readonly. (yemedi.)
Edit1.Enter even'tına Keyb.HideVirtualKeyboard; (yemedi).

umarım problemimi anlatabilmiş imidir.. sizce nasıl bir yol izlemeyim..?
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#2
Edit1 tabstop false veya
Edit1 in on Enter ine şartlı olarak klavye çıkarsa klavye başlatıcıdan önce abort yazmak
durumu çözüyormu
Bir fikir veriyim diye,
Cevapla
#3
Üstad, Edit'in .KillFocusByReturn özelliğini TRUE yaparak hiç denediniz mi?
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#4
Şöyle bi ek bilgi vereyim. Edit2 ye sadece sunucu ip yi 1 kere yazdığım için daha da gösterilmiyor ve keyboard gerekmiyor.

Fakat edit1 de tek tek Killfocusby return ve tabstop işlerini denedim. İkiside uygulamayı ilk açarken kilitledi. ve kill etti.

Aslında readonly ile olayı çözülüyor. Fakat bu seferde çipe entegre barkod okuyucusu okuduğu barkodu edite yazamıyor Smile
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
Edit1 -> ImeMode -> ImClose | ImDisabled
Cevapla
#6
Edit1 setfocus olduğunda ortaya çıkan klavye kontrolün altında olan bir form ise, formu kontrol altında tutabilirsin form top form left kordinatı belirlemek için,
Eğer kontrolün dışındaysa yani edit1 setfocus ile tetiklenen bir component ise onun handlesini bulup klavyeyi kordinatlaman gerekecek anladığım kadarıyla böyle, veya edit1 setfocus yöntemini değiştirmen gerek.
Cevapla
#7
(12-03-2022, Saat: 17:03)mcuyan Adlı Kullanıcıdan Alıntı: Şöyle bi ek bilgi vereyim. Edit2 ye sadece sunucu ip yi 1 kere yazdığım için daha da gösterilmiyor ve keyboard gerekmiyor.

Fakat edit1 de tek tek Killfocusby return ve tabstop işlerini denedim. İkiside uygulamayı ilk açarken kilitledi. ve kill etti.

Aslında readonly ile olayı çözülüyor. Fakat bu seferde çipe entegre barkod okuyucusu okuduğu barkodu edite yazamıyor Smile

Üstad, Formun KeyDown olayına aşağıdaki kodu yazıp denemeniz mümkün mü  :

if Key = vkReturn then
 begin
   Key := vkTab;
   KeyDown(Key, KeyChar, Shift);
 end;
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#8
@rmzgenius  malesef hocam.

@vedat35  hocam o ikisin de denedim olmadı. Onlar ne işe yarıyor tam olarak?

@COMMANDX hocam normal and klavye çıkıyor.
Hatta şunu bile denedim:


procedure TForm1.FormVirtualKeyboardShown(Sender: TObject;
 KeyboardVisible: Boolean; const Bounds: TRect);
begin
if activecontrol=Edit1 then
 KeyboardVisible:=False;
end;


Fakat nafile.. Bir yerde kaçırdığım birşey var..

Bu arada setfocusları sildim yerlerine
Form1.Activecontrol=Edit1;
yazdım.. bu da olmadı.

Aslında yapılmak istenen tam olarak şu: Edit'e klavye haricinde input yapmam gerkeiyor. Fakat android de otomatik klavye açılıyor edite girildiğinde. Açılmaması gerekiyor.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#9
Ben verdiğiniz örneğe göre her iki yazdığım kod ile de sorunsuz çalıştırabildim üstad. Belki sizin projede başka bir şeyden dolayı mı hata yapıyor bilemiyorum, hatta form'un activecontrol özelliğinde edit'i kontrol edip HideVirtualKeyboard yazıp denedim yine oldu. Gerçi ben sanal bir android cihazında test ediyorum. Ondan da olabilir.
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#10
Hocam Olay şu:
Edit'e setfocus yapıldığında imlecin yanıp sönmesi gerkeiyor ki external takılmış usb barkod okuyucu data gönderebilsin edit'e ve ona göre işlem yapılsın.

Sonucu yıllar önce çözmüşüm Smile

https://www.delphican.com/showthread.php?tid=3153

Yanlış bakınca yanlış yollardan çözüm arıyormuş insan. Setfocus yapınca canfocus eventına gitmek gerekiyor.. Smile


procedure TForm1.Edit1CanFocus(Sender: TObject; var ACanFocus: Boolean);
{$IFDEF ANDROID}
var
 FService: IFMXVirtualKeyboardService;
{$ENDIF}
begin

{$IFDEF ANDROID}
 TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
 if (FService <> nil) and (FMX.Types.TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then
 begin
   FService.HideVirtualKeyboard;
   Exit;
 end
 else
   FService.ShowVirtualKeyboard(Memo1);
{$ENDIF}
end;

Tekrar açmak için:

FMX.Types.VKAutoShowMode := TVKAutoShowMode.Always;
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  OrangeUI TSkinFMXEdit Klavye Sorunu serifaliyagci 2 527 04-08-2023, Saat: 10:29
Son Yorum: serifaliyagci
  sanal klavye tetiklemesi sokratayb 1 712 01-09-2021, Saat: 16:52
Son Yorum: 3ddark
  Açılır Klavye ve İçeriği Kontrol Etme OmerAsaf 1 741 24-06-2021, Saat: 17:01
Son Yorum: hbulus
  fmx klavye sorunu hk. OmerAsaf 2 1.249 07-06-2021, Saat: 23:27
Son Yorum: OmerAsaf
  Barkod Okuyucu takınca Fiziksek klavye sabit kalıyor shooterman 2 1.464 10-04-2021, Saat: 13:22
Son Yorum: yasard



Konuyu Okuyanlar: 1 Ziyaretçi