1

Konu: İmleç Kayboluyor

Kioskta çalışan bir programım var. Ana formda sadece 1 textbox var. Öğrenci kimlikleri barkod okuyucuya okutulunca textboxun lostfocusu çalışıyor. Barkodun okunması için imleç devamlı textboxta olmak zorunda. Timer içine her 5 saniyede textboxa setfocus yaptırıyorum. Buna ragmen imleç kayboluyor. İmleç textboxta olmayınca da barkod okuyucu devre dışı kalmış oluyor. Formda başka tabstop=.t. olan obje de yok.  İmlecin devamlı textboxta olması için ne yapabilirim? Kiosk dokunmatik değil. klavye veya fare de takılı değil.

2

Re: İmleç Kayboluyor

Lostfocus da işlemlerden sonra RETURN .F. yapmayı denermisiniz...

3 Son düzenleyen, cetinbasoz (10.01.2013 10:22:20)

Re: İmleç Kayboluyor

Kiosk olduguna gore buyuk ihtimalle SDI formdur ve focusu kaybeden textbox degil, VFP uygulamanin ta kendisidir.

Textbox'in oldugu formun hWnd propertysini al ve timerinda asagidaki kodu cagirmayi dene, ornek:

Visual Fox Pro
*Timer timer event

BringAppInFront( thisform.hWnd )
* thisform.txtENtry.Setfocus()
* ...
 
Procedure BringAppInFront(tnHWND)
    Declare Integer GetForegroundWindow In win32API
    Declare Integer GetCurrentThreadId In win32API
    Declare Integer GetWindowThreadProcessId In win32API ;
        integer HWnd, Integer @lpdwProcessId
    Declare short SetForegroundWindow In win32API Integer lnHWnd
    Declare short AttachThreadInput In win32API ;
        integer idAttach, Integer idAttachTo,  short fAttach
 
    Declare Integer SetActiveWindow In WIN32API Integer HWnd   && handle to window
 
    Local lpdwProcessId, lnThreadID1, lnThreadID2
    lpdwProcessId = 0
    lnThreadID1 = GetCurrentThreadId()
 
    lnThreadID2 = GetWindowThreadProcessId( m.tnHWND, @lpdwProcessId)
 
    AttachThreadInput(lnThreadID1, lnThreadID2, 1)
    SetForegroundWindow(m.tnHWND)
    SetActiveWindow(m.tnHWND)
    AttachThreadInput(lnThreadID1, lnThreadID2, 0)
Endproc

Not: Bu kod o sirada baska bir formda is yapiyor bile olsan focusu alip forma verecek (Kiosk icin iyi de, aklinda bulunsun, baska yerde is yaparken ikide bir senden kontrolu alan birsey).

4

Re: İmleç Kayboluyor

Her iki öneriyi de deneyeceğim.
Teşekkürler

5 Son düzenleyen, smentes (15.01.2013 20:32:28)

Re: İmleç Kayboluyor

Çetin Bey,
Kodlar çalışıyor. Form devamlı setfocus konumunda. İmleçte textboxta. Ancak buna rağmen barkod okuyucu kartı okuduğunda textboxa yazmıyor. Ancak ben Fare ile tetxboxa tıklarsam işlem gerçekleşiyor.
İmleç textboxta aktif olmasına ragmen, aslında imleç başka yerde. Barkod okuyucu numarayı yazacak yer arıyor.

6

Re: İmleç Kayboluyor

Timer event' inin en sonuna ve barkodu okuttuktan sonra çalıştırdığın kod bloğunun da en altına :

Visual Fox Pro
ThisForm.text1.Setfocus()
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

7

Re: İmleç Kayboluyor

Sayın Uğurlu
Baştan beri yazdığınız şekilde zaten.
Benim anlamadığım imleç textboxta aktif olmasına rağmen barkod okuyucunun kendisine başka bir giriş yeri araması.

8 Son düzenleyen, ugurlu2001 (16.01.2013 14:15:39)

Re: İmleç Kayboluyor

Çetin Üstad 'ın verdiği kodu formunuza eklediniz mi?

Onun söylediği gibi bana da "Form Focus" kayboluyor gibi geldi:

Formu tasarım modunda açın;

VFP menüsünden;

Form\New Method ( seçin )

Açılan "New Method" penceresine "ONEGETIR" yazın ve "ADD" butonuna tıklayın. Sonra "CLOSE" Butonuna tıklayın!

Form properties penceresinde "ONEGETIR" method 'unu açın ve Çetin Hoca 'nın verdiği kodu buraya yapıştırın!

Visual Fox Pro
Declare Integer GetForegroundWindow In win32API

    Declare Integer GetCurrentThreadId In win32API
    Declare Integer GetWindowThreadProcessId In win32API ;
        integer HWnd, Integer @lpdwProcessId
    Declare short SetForegroundWindow In win32API Integer lnHWnd
    Declare short AttachThreadInput In win32API ;
        integer idAttach, Integer idAttachTo,  short fAttach
 
    Declare Integer SetActiveWindow In WIN32API Integer HWnd   && handle to window
 
    Local lpdwProcessId, lnThreadID1, lnThreadID2
    lpdwProcessId = 0
    lnThreadID1 = GetCurrentThreadId()
 
    lnThreadID2 = GetWindowThreadProcessId( m.tnHWND, @lpdwProcessId)
 
    AttachThreadInput(lnThreadID1, lnThreadID2, 1)
    SetForegroundWindow(m.tnHWND)
    SetActiveWindow(m.tnHWND)
    AttachThreadInput(lnThreadID1, lnThreadID2, 0)

Barkodu okuduktan sonra yada timer da kodunuzu çalıştırdıktan sonra :

Visual Fox Pro
Thisform.Onegetir()


Visual Fox Pro
ThisForm.Text1.Setfocus()

Yazmanız yeterli!

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

9

Re: İmleç Kayboluyor

Ben aynen dediğiniz gibi yaptım. Siz new methot demişsiniz. Ben procedure yapmıştım.
Yani çetin beyin dediği gibi.