1

Konu: Grid ile yardım ekranı

Merhaba, form'da bir alana yazmak için, table'daki bilgileri listeleyen yardım listesini grid ile yapıyorum. Burada istenilen bilginin üzerine gelip ENTER'a bastığımda bilgiyi alana getiremiyorum. ENTER'a bastığımda GRID'taki kolonlar arasında geziyor. Entere nasıl tanımlarım.

2

Re: Grid ile yardım ekranı

keypress'e bak.

3 Son düzenleyen, abg (25.11.2008 22:25:25)

Re: Grid ile yardım ekranı

Aşağıdaki source entera bastığımda bilginin gelmesi gereken Txt alanının KeyPress'i. Grid'in KeyPress'i boş. Teşekkürler...




LPARAMETERS nKeyCode, nShiftAltCtrl
     
      If nKeyCode = 24 And ThisForm.GrdBrans.Visible
         ThisForm.GrdBrans.Tag = "*"
         Keyboard "{Tab}"
      Else
         If nKeyCode = 13
            ThisForm.GrdBrans.Tag     = ""
            ThisForm.GrdBrans.Visible = .F.
         Endif
      Endif

4

Re: Grid ile yardım ekranı

Sorunumu hala çözemedim

5

Re: Grid ile yardım ekranı

Once anlatman lazim. Ben anlamadim, sanirim anlayan baskasi da yok.

6 Son düzenleyen, ercan (27.11.2008 10:34:27)

Re: Grid ile yardım ekranı

şu şekilde olabilir.

griddeki textbox ın keypress kodu:
-----------------------------------------
if   If nKeyCode =13
*güncellenecek alanları önce boşalt
form1.text1.value=""
form1.text2.value=""
.
.
.
.
.
*sonra tablodaki bilgileri text alanlara tipine göre ata
form1.text1.value=table1.alan1
form1.text2.value=table1.alan2
.
.
.
.
thisform.refresh
return
endif

Büyük ithimalle bu sana bir fikir verecektir.
Aynı kod için double click içinde kullanabilirsin

griddeki textbox ın doubleclick kodu:
--------------------------------------------
this.keypress(13)
return

Hatalı kod yazdıysam üstadlar düzeltirlerse sevinirim.Saygılar.

7 Son düzenleyen, cetinbasoz (27.11.2008 13:03:11)

Re: Grid ile yardım ekranı

Ercan,
Eger senin anladigin gibiyse:

form1.text1.value=""
...
form1.text1.value=table1.alan1
...
thisform.refresh

Yerine sadece:
form1.text1.value=table1.alan1

yeterli. Eger boyleyse daha pratik yolu:

form1.text1.ControlSource ="table1.alan1"

ve gereken yerde thisfrom.refresh ( tipik olarak grid.afterrowcolchange'de )

Abg'nin verdigi kodda Enter'a basinca grid.Visible = .f. yapiyor da, bilgiyi alana getirmek ne demek onu anlamadim. Zaten orada olan birsey degil mi?
(Gerci neden gridi sakladigini da anlamadim:)

8 Son düzenleyen, ercan (27.11.2008 14:26:38)

Re: Grid ile yardım ekranı

atıyorum
ekranda bir fatura formu var.
bu forma müşteri bilgileri ,tarih , irsaliyeno ,fatura no ve ürün bilgileri giriyoruz değil mi?
Bu forma , müşteriyi ve ürünleri seçmek için genelde başka bir formdan gird içindeki bir tablodan arayıp bulup bilgiyi ekrana aktarırız. Arkadaşın yapmak istediği "bu bilgileri gridden ekrana "enter" tuşuna basınca nasıl aktarırız?" şeklinde anladım. Muhtemelen formda  birçok alan var. Bu yüzden her alanı ayrı ayrı boşaltıp sonra tablo alanlarıyla doldurdum.
Not:Yazdığım kodu , formdaki alanlarla , table1 alanlarının aynı tip fakat farklı ad da olduğunu varsayarak yazdım.

9 Son düzenleyen, cetinbasoz (27.11.2008 15:30:48)

Re: Grid ile yardım ekranı

Galiba Ercan'in yardimiyla birseyler anladim. Soyle birsey mi acaba:

Visual Fox Pro
Public oForm

oForm = Createobject('Ornek')
oForm.Show
 
Define Class ornek As Form
  DataSession = 2
  Height = 600
  Width = 800
 
  Add Object txt1 As TextBox With Left=10,Top= 10,ControlSource='customer.cust_id'
  Add Object txt2 As TextBox With Left=10,Top= 40,ControlSource='customer.company'
  Add Object txt3 As TextBox With Left=10,Top= 70,ControlSource='customer.contact'
  Add Object txt4 As TextBox With Left=10,Top=100,ControlSource='customer.title'
  Add Object txt5 As TextBox With Left=10,Top=130,ControlSource='customer.country'
 
  Add Object musteri As CommandButton With Left=10,Top=170,Caption='Musteri sec'
 
  Add Object grdMusteri As Grid With Left=10,Top=200,Height=380,Width=780,;
    Visible = .F., ;
    RecordSourceType=4,;
    RecordSource='select Company,Contact,Country,Cust_id from customer into cursor crsCustomer'
 
  Procedure Load
    Use (_samples+'data\customer')
    Go Bottom
    Skip
  Endproc
 
  Procedure grdMusteri.When
    Thisform.KeyPreview = .T.
  Endproc
 
  Procedure grdMusteri.Valid
    Thisform.KeyPreview = .F.
  Endproc
 
  Procedure KeyPress
    Lparameters nKey,nControl
    If m.nKey = 13 And ;
        TYPE('thisform.ActiveControl') = 'O' And ;
        !Isnull(Thisform.ActiveControl) And ;
        thisform.ActiveControl = Thisform.grdMusteri
 
      =Seek( crsCustomer.cust_id, 'customer', 'cust_id' )
      Thisform.Refresh()
      Thisform.grdMusteri.Visible = .F.
 
    Endif
  Endproc
 
  Procedure musteri.Click
    Thisform.grdMusteri.Visible = .T.
    Thisform.grdMusteri.SetFocus()
  Endproc
Enddefine

10 Son düzenleyen, abg (05.12.2008 23:06:50)

Re: Grid ile yardım ekranı

Ercanın dediği doğru. Başka bir tabledaki bilgiyi bu ekrana getirmek istiyorum. Ben sorunu şöyle çözdüm. Grid'in Text1'inin click'ine ve KeyPress aşadıdaki soursu yazınca oldu.

CLICK:
      ThisForm.TxtBransNo.Value = This.Value
     
      ThisForm.GrdBrans.Tag     = ""
      ThisForm.GrdBrans.Visible = .F.
      ThisForm.TxtBransNo.LostFocus

KEYPRESS:
LPARAMETERS nKeyCode, nShiftAltCtrl
     
      If nKeyCode = 13
         This.Click
         Keyboard "{Tab}"
      Else
         If nKeyCode = 27
            ThisForm.GrdBrans.Tag     = ""
            ThisForm.GrdBrans.Visible = .F.
            ThisForm.TxtBransNo.SetFocus
         Endif
      Endif

Çok teşekkür ederim....;)