Sanal Klavye
athena06.03.2004 - 18:45:36
Arkadaslar Klavyesiz kullanılmadan çalışan bilgisayarlarda
kullanılmak üzere Xp deki klavye gibi sanal bir klavye componenti yada böyle bir uygulama yapan varmıdır?

Selamlar,
 
fatihtolgaata06.03.2004 - 22:35:11
sorun ne? sadece örnek mi? yoksa nasıl yapıldığı mı? Ben bu konuda araştırmam oldu. Virtual Keybord şeklinde aratabilirsin. bdn.borland.com adresinde böyle bir örnek mevcut.
 
mrmcop07.03.2004 - 23:05:27
- Ekrana koyacağın 100 tane button ile yapmak mümkün, bilmediğimiz extra başka bir işlem mi yapmak istiyorsun ?
 
mussimsek08.03.2004 - 01:11:15
Sanırım Recep bey, ekrandaki aktif pencereye tuşları göndermek istiyor. Bununla ilgili daha önce konuşmuştuk sanırım. Bir fonksiyor vardı SendKeys32 olması lazım. İstediğiniz tuşu gönderebiliyordunuz.

Kolay gelsin.
 
athena08.03.2004 - 09:43:58
Mustafa'nın dediği gibi o an aktif form hangi formsa klavye ona bilgi gonderecek. Kullanıcı form üzerinde herhangi bir component üzerinde olabilir. Edit, Curredit,rx,grid,buton herhangi biri üzerinde burada bir tuşa basınca sanal klavye çıkacak sonra sanal klavyeden bastığı her tuş o formda ne görev yapıyorsa onu yapacak yada bir edit sahasındaysa girilen tuşlar editin içine gelecek.

Kiosk makinalarındaki gibi gerçek klavye mouse yok. Touch screen bir ekran var.

Tam olarak istediğim bu. Problem sanal klave formundan basılan bilgiyi diger aktif forma aktarmak.

Selamlar,
 
mrmcop08.03.2004 - 10:41:23
Selam...

- Sorun sadece sendkeys ile bitmiyor... Şöyle bir problem var...

- ActiveControl denen olay problem yaşatabilir... Yani siz kendi formunuzdaki butona bastığınızda bu tuşun hangi forma/edit kutusuna vs. gönderileceğinin bilinmesi gerekir... Yani sizin formdaki butona basıldığında, formunuz focus olmamalı ki nereye senkey edileceği bilinsin... Exclaim

Idea Çözüm olarak aklıma gelen ilk şey, WinSight programı benzeri bir tracker tasarlamak.... Windows'daki tüm mesajlar hook edilerek sizin formunuzdan bir önceki form/bileşen vs. hangisi onun bir listeden tespit edilmesini sağlamak şeklinde. Zor ve detaylı bir işlemdir, kolay gelsin...
 
fatihtolgaata08.03.2004 - 11:36:05
SndKey32 fonksiyonu VisualBasic'dekinin bir kopyası niteliğindedir. Ben bunu kullanmadım. Dediğin gibi focus olayı gerçekten sorun oluyor. Bunun için sana söylediğim örneği incelemelisin. Bak bir de tam link veriyorum:
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18590

İki API komutu var. GetForegroundWindow ve SetForegroundWindow. Bunları SDK dökümanlarından incele. Tek yapman gereken bir tuş komponenti yapmak. Ardından şunun gibi bir mesajı yakalayıp işlemen lazım:

Yakalanacak mesaj ve prosedür:

procedure WMMouseActivate(var Msg: TWMMouseActivate);message WM_MOUSEACTIVATE;


Prosedürün içeriği:


procedure TForm1.WMMouseActivate(var Msg: TWMMouseActivate);
begin
msg.Result := MA_NOACTIVATE;
if (Wnd <> GetForegroundWindow)and(Wnd <> Handle)and(Wnd <> 0) then
begin
SetForegroundWindow(Wnd);
Windows.SetFocus(Wnd);
end;
end;


kolay gelsin.
 
mrmcop08.03.2004 - 11:48:01
- Yukarda verilen linke bir gözatayım dedim... Koyulaştırdığım yeri okuyun... 8) Kusursuz... Focus almayan bir form olduğunu yazıyor... Bahsettiğim sorun da ortadan kalmış oldu...

The example shows how to create and use a form that acts as a virtual numeric keypad. The form is topmost and will not take the focus when clicked upon. Clicks on its "buttons" will create key events that go to whatever control in the active window that has the focus.
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com