Yorumları: 151
Konuları: 14
Kayıt Tarihi: 18-09-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 552
Acemi
Merhaba arkadaşlar
Şöyle bir problemim var acaba aranızda uğraşan yada tavsiye verebilecek var mı;
Bir tane kiosk uygulamam var. Bu uygulama sayesinde abone kartlarına elektrik su gaz yüklenir. Uygulama kiosk şeklinde çalışır ve touch screen kullanmaktadır. İlk adımda abone kart okuyucuya koyunca otomatik olarak kart okur ve aralarda ekranda formlar gösterip mesajlar görünmektedir. Fakat touch screende bazı sabırsız aboneler geçişlerinde ekrana basmaya çalışıyorlar yani daha ana ekran gelmedikçe ve böylece program yanıt vermesini bekleyin falan hata vererek kapanabiliyor. Sorum şu ; bu geçişler arasında touch screen işlevseliği kapatabilir miyiz delphi üzerinde yani aboneler tıklasa da program algılamayacak şeklinde olacaktır. Çok şey denedim mouse klavye servis dışı bırakıp tekrar aktifleştirme, formlarda enable false gibi durumlar ama nafile pek çözüm olmuyor. Sizin önerebileceğiniz bir çözüm varsa seve seve denerim.
Teşekkürler
Yorumları: 52
Konuları: 2
Kayıt Tarihi: 06-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 154
Başlangıç
Merhaba;
Dokunmatik ekranı, klavyeyi veya fareyi devre dışı bırakmaya çalışmak yerine, ana thread'de uzun süren işlemler yapmayan ve dolayısıyla sürekli yanıt verebilir bir uygulama yazmaya çalışmak doğru olacaktır. Sanırım kartın okunması/yazılması gibi işlemler vakit alıyor ve bu işlemler devam ederken kullanıcı tıkladığında uygulamanız yanıt veremez hale geliyor.
Ana thread'de yapılan ve uzun süren işlemleri farklı bir thread'e taşımak doğru çözüm olacaktır bence.
Yorumları: 151
Konuları: 14
Kayıt Tarihi: 18-09-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 552
Acemi
Teşekkür ederim
Farklı threadlar üzerinde genel olarak işler yapılmaktadır create free olan yerleri çok dikkat edildi fakat onu bir türlü geçemedim aynen dediğiniz gibi kart okurken mesaj ekranda var lütfen bekleyiniz kartınız okunuyor falan o zamanda sabırsızlar basa basa bu da çok böyle parmaklarla bastıklarında oluyor bikaç defa basılırsa bişey olmuyor benim düşündüğüm bir şekilde disable enable yapabilmesi ama pek bişey bulamadım. İnternette te bir kaç yer var o da c# CE6.0 içindir.
Teşekkürler
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
Merhaba, öncelikle ana thread’i bloklamayacak bir çözüm olarak uzun süren işlemlerin bir başka thread’de yapılmasını öneriyorum. Uzun süren iş arka planda bir thread olarak işletilirken önde modal bir form kullanıcının karşısına çıkartılabilir. Yada, BlockInput Api’si ile klavye ve mouse’u kilitleyebilirsiniz. Yada, PeekMessage Apisi ile kullanıcının bastığı mouse ve klavye mesajlarını silebilirsiniz. (WM_KEYFIRST, WM_KEYLAST, WM_MOUSEFIRST, WM_MOUSELAST ve PM_REMOVE’u incelemenizi öneririm)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375
Üstad
Merhaba,
Bu tarz işlemler için yan thread içerisinde ekrana sizin belirleyeceğiniz bir "loading" ekranı oluşturarak verilebilir. Ekranda yapılan işlemin süresi, ne yapıldığı bilgisini de sunabilirsiniz.
Yorumları: 1.381
Konuları: 75
Kayıt Tarihi: 20-03-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.3
- Delphi 10.2
- Delphi 7
- Lazarus / FPC
Rep Puanı: 3.849
Uzman
Kiosk uygulamasi ise zaten form fullekrandir ve Formx.Enabled:=False; en basit çözüm..??
// Bilgi paylaştıkça çoğalır..
Yorumları: 669
Konuları: 73
Kayıt Tarihi: 20-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.544
Programcı
Selamlar
Bende aynı şekilde, yazmış olduğum kiosk uygulamasında, sabırsız kullanııcı sorununu çözmek için işlem başladığı anda diğer kullanabilecekleri butonları disable ediyorum. Arka tarafta, thread işlemi bitince tekrar butonları aktif hale getiriyorum. Böylelikle diğer işlemleri yapmalarına mani oldum.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Yorumları: 151
Konuları: 14
Kayıt Tarihi: 18-09-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 552
Acemi
Arkadaşlar teşekkür ederim tavsiyelerinize deneyeceğim sonuç olarak yada başka bir çözüm bulursam paylaşacağım sizinle