Share this topic on FacebookShare this topic on MySpaceShare this topic on Del.icio.usShare this topic on DiggShare this topic on StumbleUponShare this topic on TwitterShare this topic on GoogleShare this topic on Yahoo

Author Topic: mendisabled baris tertentu pada grid  (Read 196 times)

0 Members and 1 Guest are viewing this topic.

Offline soegeng

  • Newbie
  • *
  • Thank You
  • -Given: 1
  • -Receive: 0
  • Posts: 15
mendisabled baris tertentu pada grid
« on: June 13, 2010, 09:06:45 PM »
Master Fox Mania , mohon bantuannya saya punya problem sbb:

baris data tertentu pada grid ingin saya disabled sebagai contoh :

kode brg    nama brg    qty jual     hrg jual       subtotal
abc            decolgen     10             1.000          10.000       baris data ke 1
def             ultra flu       20             1.000          20.000       baris data ke 2
ketika sampai column4 grid( hrg jual ) dan dienter masuk ke column1 ( kode brg )

disini letak masalahnya pada saat user melakukan input di baris ke 3
dan user menekan tombol panah atas ( up arrow ) atau  panah bawah ( down arrow )
bagaimana caranya agar tidak bisa ke baris2 diatas baris ke 3 atau turun ke baris2 dibawah baris ke 3
karena column1 dari grid ( kode brg ) selalu enabled=.t.
dan allowadnew pada grid =t

thanks before to Mr Smart

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Thank You
  • -Given: 12
  • -Receive: 44
  • Posts: 1334
    • Foxy Land
Re: mendisabled baris tertentu pada grid
« Reply #1 on: June 13, 2010, 10:58:18 PM »
soegeng:

Ini memang masalah klasik input (entry data) di grid. Masalahnya, untuk setiap data yang masuk ke table, seharusnya di-validasi terlebih dahulu; apakah 'layak' untuk masuk (=valid/memenuhi kaidah business rule yang berlaku) atau tidak. Karena itu banyak programmer/UI designer yang lebih condong untuk menyediakan satu form terpisah untuk input data. Tujuannya untuk memudahkan validasi data. Tapi -- seperti biasa -- itu memang masalah preferensi. Setiap profesional punya preferensi. Jadi tidak bisa dipatok harus-begini-atau-harus-begitu.

Okay. Kembali ke masalah Anda. Sebenarnya solusi-nya gak susah. Anda tinggal menambahkan satu field logic; katakanlah namanya lIsAllowFocus. Lalu, di setiap When event dari semua kolom di grid, berikan perintah RETURN lIsAllowFocus. Nah, triknya, pastikan hanya row (=record) baris yang sedang di-edit yang lIsAllowFocus-nya bernilai True. Dengan begini, pasti hanya row (=record) tersebut yang bisa diedit.

Sekarang, kembali ke awal pembahasan saya. Kenapa saya bilang ini masalah klasik. Tips di paragraf di atas tidak menghindarkan user untuk keluar dari form. Jadi, Anda masih punya PR untuk mem-validasi data apabila ada user yang tidak mengisi data secara lengkap, lalu meng-klik Save/Keluar dari form. Apa yang terjadi dengan data Anda kalau ada kolom grid yang segaja tidak diisi? Apakah ada nilai default, ataukah nilai kolom yang terlewat akan bernilai nol (atau bahkan null)? Apakah data langsung masuk ke table? Apakah record source grid adalah table langsung, atau Anda menggunakan cursor/view? Apa-kah Anda menggunakan buffering?

See? Silahkan berpikir dan berkreasi... :)

hth,
foxy
Some new posts...

This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline csp production

  • Senior Member
  • *
  • Thank You
  • -Given: 11
  • -Receive: 10
  • Posts: 462
  • tetap ingin belajar
Re: mendisabled baris tertentu pada grid
« Reply #2 on: June 14, 2010, 12:55:50 AM »
@foxy: masalah klasik yang butuh banyak energi ya om.... :icon_salut:
Follow members gave a thank to your post:
ngaturaken sugeng riyadi dumatheng para sederek sedanten, lepat lan lupute kawulo nyuwun pangapunten.

"MINAL AIDIN WAL FAIZIN...MOHON MAAF LAHIR DAN BATHIN...."

Offline yw2s

  • Junior Member
  • *
  • Thank You
  • -Given: 1
  • -Receive: 6
  • Posts: 288
Re: mendisabled baris tertentu pada grid
« Reply #3 on: June 14, 2010, 11:16:37 AM »
Ini cara yang sering aku gunakan jika menggunakan GRID untuk input data.
Contoh :
grid1.recordsource="MyTable" && MyTable punya field code,nama,harga,qty,total

Grid1.coloumncount=5
   coloum1 && Untuk Code status Enabled
   coloum2 && Untuk Nama status Disabled
   coloum3 && Untuk Harga status Disabled
   coloum4 && Untuk Qty status Enabled
   coloum5 && Untuk Total Harga  status Disabled

Grid1.AllowCellSelection=.t.
Grid1.AllawAddNew=.F. && Ini selalu saya bikin .F.


Di coloumn1.text1.keypress && Di sini mainnya jika ingin tambah record baru
Lparameters nKeyCode, nShiftAltCtrl
Do Case
Case nKeyCode=13 && Enter
   Replace kode With This.Value In mytable
Case nKeyCode=24 && Down Arrow
   If Len(Alltrim(mytable.kode))<>0
      NODEFAULT
      Skip In mytable
      If Eof("mycursor4")
         Go Bottom In mytable
         If Len(Alltrim(mytable.kode))<>0
            Insert Into mytable(kode) Values ("")
            Go Bottom In mytable
         Endif
      Endif
      This.Parent.Parent.Refresh
   Endif
Endcase

sedang di coloum4.text1.keypress && di Posisi kolom Qty
LPARAMETERS nKeyCode, nShiftAltCtrl
If nKeyCode=13 Or nKeyCode=24
   Replace qty With This.Value In mytable
   Skip 0 In mytable
   Skip In myteble
   If Eof("mytable")
         Go Bottom In mytable
      If Len(Alltrim(mytablekode))<>0
         Insert Into mytable (kode) Values ("")
         Go Bottom In mytable
      Endif
   ENDIF
   this.Parent.Parent.Refresh
        && Untuk kembalikan ke code
   KEYBOARD '{LEFTARROW}'  && Geser cursonr ke Colum 3
   KEYBOARD '{LEFTARROW}'   && Geser cursonr ke Colum 2
   KEYBOARD '{LEFTARROW}'    && Geser cursonr ke Colum 1
Endif


Mudah-2 membantu