Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 3/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX Scrool Keyboard Form..
#1
Merhaba Arkadaşlar.

Mobil ekranlarda Klavye çıktığı zaman Bazı kontroller (Edit,memo vs) klavye arkasında/altında kalıyor.

bu konuda delphiinn bir kaç örneği var.. o bile düzgün çalışmıyor.

Bu konuda reel bir çözümü olan varmıdır?

Teşekkürler Şimdiden
WWW
Cevapla
#2
Merhabalar,


Eskiden bu konuyu bende araştırıp denemeler yapmıştım, arşivimde şöyle bir kaydedilmiş site buldum isterseniz inceleyin;


procedure TControlMover.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);
begin
FVKVisible := False;
if Assigned(FSaveProps.Control) then
begin
FSaveProps.Control.AnimateFloat('Position.Y', FSaveProps.Position.Y, 0.1);
FSaveProps.Control.Align := FSaveProps.Align;
end;
end;

procedure TControlMover.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect);
begin
FVKVisible := True;
FVKBounds := Bounds;
if FocusedControl = nil then
Exit;
DoGetMoveControl;
if Assigned(FSaveProps.Control) then
begin
FSaveProps.Control.Align := TAlignLayout.alNone;
FSaveProps.Position.Y := FSaveProps.Control.Position.Y;
SlideControl;
end;
end;



procedure TFormMain.FormVirtualKeyboardHidden(Sender: TObject;
KeyboardVisible: Boolean;
const Bounds: TRect);
begin
FKBBounds.Create(0, 0, 0, 0);
FNeedOffset := False;
RestorePosition;
end;

procedure TFormMain.FormVirtualKeyboardShown(Sender: TObject;
KeyboardVisible: Boolean;
const Bounds: TRect);
begin
FKBBounds := TRectF.Create(Bounds);
FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft);
FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight);
UpdateKBBounds;
end;


Kodların İngilizce açıklaması için bu Linkleri Görebilmeniz İçin Giriş yap veya Üye Olziyaret edebilirsiniz.


Saygılarımla,
İyi çalışmalar.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#3
yok dostum bu olmuyor..
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol burdaki uygulamayı indirip uygulamana vkbdhelper.pas dosyasını ekleyip uses kısmına da bunu "vkbdhelper" eklersen, hiç bir ayar kod yazmana gerek kalmadan direk bu işi yapıyor..
WWW
Cevapla
#4
Merhaba, daha önce yapmış olduğum sanal klavye yönetim prosedürlerini GitHub üzerine yükledim. İşinize yarayacaktır.

Erişim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

İyi günler.
{ talk is cheap show me the code. }
Cevapla
#5
(30-10-2017, Saat: 10:18)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, daha önce yapmış olduğum sanal klavye yönetim prosedürlerini GitHub üzerine yükledim. İşinize yarayacaktır.

Erişim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

İyi günler.

Abdullah Bey tokyo için desteğinden bhsetmişsiniz? Acaba bu test etme fırsatı bulamadığınızdan mıdır yoksa gerçekten yokmu tokyo desteği?

(30-10-2017, Saat: 10:18)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, daha önce yapmış olduğum sanal klavye yönetim prosedürlerini GitHub üzerine yükledim. İşinize yarayacaktır.

Erişim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

İyi günler.

Ayrıca tüm formda aktif olması için Form Show yada create inde ShowKeyboardOnForm  prosedürünü çağırmamız yetiyormu? yoksa her control ün onenter event'ında ShowKeyboardOn(edit1), onexit event'ında HideKeyboardOn(edit1) şeklindemi kullanmak daha iyi?
WWW
Cevapla
#6
(30-10-2017, Saat: 22:42)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAbdullah Bey tokyo için desteğinden bhsetmişsiniz? Acaba bu test etme fırsatı bulamadığınızdan mıdır yoksa gerçekten yokmu tokyo desteği?

Ayrıca tüm formda aktif olması için Form Show yada create inde ShowKeyboardOnForm  prosedürünü çağırmamız yetiyormu? yoksa her control ün onenter event'ında ShowKeyboardOn(edit1), onexit event'ında HideKeyboardOn(edit1) şeklindemi kullanmak daha iyi?

Merhaba,

Henüz Tokyo'ya geçmediğim için test etme imkanı bulamadım. Github'da bahsi geçen bu versiyonlarla derlenmiş uygulamalarda sorun yaşatmadığı üzerineydi. Tokyo'da denendiği zaman bildirirseniz onu da ekleriz.

Projenin DPR dosyasında VKAutoShowMode özelliğini el ile atayabilirsiniz. Onun dışında aynı form içinde kullanım sağlayacaksanız tüm inputlara referans alabileceğiniz bir metod oluşturun. Mesela her input bittiğinde validation yapacaksanız onun içerisinde kapat-aç işlemlerini yapabilirsiniz.

Eğer sizi çok yormayacaksa her kontrolün kendi event'larında yönetmek daha sağlıklı olur. 

Örnek olması açısından;


procedure TEntTransaction.txtProcessDescEnter(Sender: TObject);
begin
  ShowKeyboardOn(txtProcessDesc);
end;

procedure TEntTransaction.txtProcessDescExit(Sender: TObject);
begin
  HideKeyboardOnForm;
end;
{ talk is cheap show me the code. }
Cevapla
#7
(30-10-2017, Saat: 10:18)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, daha önce yapmış olduğum sanal klavye yönetim prosedürlerini GitHub üzerine yükledim. İşinize yarayacaktır.

Erişim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

İyi günler.

Abdullah bey,  ben durumu tam anlayamadım, zaten edit nesnesine focus olunduğunda klavye otomatik çıkıyor, bütün bu procedurlere ne gerek var?
ayrıca nesneler klavyenin yine altında kalıyor,  mantığını anlayamadım ?
Cevapla
#8
(30-10-2017, Saat: 01:58)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olyok dostum bu olmuyor..
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol burdaki uygulamayı indirip uygulamana vkbdhelper.pas dosyasını ekleyip uses kısmına da bunu "vkbdhelper" eklersen, hiç bir ayar kod yazmana gerek kalmadan direk bu işi yapıyor..

Malesef bu yöntemde olmadı.. 

Grid layoutpanel i ilk olarak sıkıştırıyor fakat klavye gizlendiğinde tekrar eski halini almıyor..

(31-10-2017, Saat: 09:21)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(30-10-2017, Saat: 22:42)mcuyan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAbdullah Bey tokyo için desteğinden bhsetmişsiniz? Acaba bu test etme fırsatı bulamadığınızdan mıdır yoksa gerçekten yokmu tokyo desteği?

Ayrıca tüm formda aktif olması için Form Show yada create inde ShowKeyboardOnForm  prosedürünü çağırmamız yetiyormu? yoksa her control ün onenter event'ında ShowKeyboardOn(edit1), onexit event'ında HideKeyboardOn(edit1) şeklindemi kullanmak daha iyi?

Merhaba,

Henüz Tokyo'ya geçmediğim için test etme imkanı bulamadım. Github'da bahsi geçen bu versiyonlarla derlenmiş uygulamalarda sorun yaşatmadığı üzerineydi. Tokyo'da denendiği zaman bildirirseniz onu da ekleriz.

Projenin DPR dosyasında VKAutoShowMode özelliğini el ile atayabilirsiniz. Onun dışında aynı form içinde kullanım sağlayacaksanız tüm inputlara referans alabileceğiniz bir metod oluşturun. Mesela her input bittiğinde validation yapacaksanız onun içerisinde kapat-aç işlemlerini yapabilirsiniz.

Eğer sizi çok yormayacaksa her kontrolün kendi event'larında yönetmek daha sağlıklı olur. 

Örnek olması açısından;


procedure TEntTransaction.txtProcessDescEnter(Sender: TObject);
begin
  ShowKeyboardOn(txtProcessDesc);
end;

procedure TEntTransaction.txtProcessDescExit(Sender: TObject);
begin
  HideKeyboardOnForm;
end;
Abdullah bey sizin yöntemde olmuyor.. Standart formlarda işe yarayabiliyor fakat ben biraz daha complex yapılar kullanıp, apk ya yükleniyoruum sanırım.. yani gridpanellayout nesnesini diğer yöntemlede sizin yöntemlede denediğimde ilk olaak küçültsedesornasında şaşmalar yapıyor.. mesela bir ikonu küçültüyor sonrasında büyütmüyor vs.vs. sanırım delphi XE versiyonları için bir BUG bu..
WWW
Cevapla
#9
Ben de internette epeyce aradım. Bulduğum her örneği denedim, hiçbiri düzgün çalışmıyor.
Bir de bazı konularda şöyle bir şaşkınlığım var. Sanki bu tip sorunları sadece ben ve bir kaç kişi yaşıyor, diğerleri hiç bu tip bir sorun yaşamamış gibi bir izlenime kapılıyorum. Mobil bir uygulama yapıyorsanız, ekranda bir editbox ınız varsa bu sorunla herkesin karşılaşması ve bu konuda bir çok örnek olması gerekmez mi?
Kendimce bir şeyler yaptım, ancak her control için ayrı kod yazmak saçma geliyor bana. Bunun pratik bir yolu olmalı diye düşünüyorum...
Cevapla
#10
(25-11-2017, Saat: 17:05)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBen de internette epeyce aradım. Bulduğum her örneği denedim, hiçbiri düzgün çalışmıyor.
Bir de bazı konularda şöyle bir şaşkınlığım var. Sanki bu tip sorunları sadece ben ve bir kaç kişi yaşıyor, diğerleri hiç bu tip bir sorun yaşamamış gibi bir izlenime kapılıyorum. Mobil bir uygulama yapıyorsanız, ekranda bir editbox ınız varsa bu sorunla herkesin karşılaşması ve bu konuda bir çok örnek olması gerekmez mi?
Kendimce bir şeyler yaptım, ancak her control için ayrı kod yazmak saçma geliyor bana. Bunun pratik bir yolu olmalı diye düşünüyorum...

Sizinle aynı fikirdeyim.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Form oluşturma (Çözüldü) Orhanlar 3 119 10-09-2018, Saat: 10:48
Son Yorum: Orhanlar
  Scrollable Form Problem malitutuncu 5 240 20-07-2018, Saat: 15:49
Son Yorum: malitutuncu
  form tasarımı arsl01 0 127 10-07-2018, Saat: 09:39
Son Yorum: arsl01
  Android Cihaz İçin Form Tasarlama hi_selamlar 4 246 27-06-2018, Saat: 12:28
Son Yorum: hi_selamlar
  FlowPanel Scrool narkotik 3 362 09-06-2018, Saat: 01:06
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi