jump to navigation

Membuat MSFlexGrid agar dapat diedit (Editable) Sun - Jun 25, 2000

Posted by supriyatna in Programming, Windows.
Tags: , , ,
trackback

Komponen MsFlexGrid memiliki lebih banyak feature dibandingkan dengan Grid / DBGrid standard yang berasal dari Visual Basic. Kelebihan tersebut diantaranya adalah dapat menggabungkan beberapa kolom atau baris (merge cell), dapat menentukan setting yang berbeda untuk setiap sel (cell-nya) dan masih banyak lagi feature yang lainnya. Namun sayang, dari kelebihan yang ada ternyata kemampuan untuk mengedit nilai yang berada pada sel di MsFlexGrid tidak disertakan didalamnya.

Sifatnya yang tidak dapat diedit inilah, yang kadang membuat jengkel dan para programmer, sehingga tidak sedikit programmer berusaha untuk mencara cara lain agar kekurangan ini dapat ditutupi —seperti: mencari komponen baru misalnya— ;-(. Namun dengan sedikit akal-akalan, sepertinya kekesalan anda tidak akan terus berlarut-larut dan andapun akan kembali menyukai VB.

Untuk mengatasi ini, idenya adalah dengan menambahkan komponen lain, yaitu menambahkan Kontrol TextBox yang fungsinya sebagi dump/buffer/tempat penyimpanan sementara yang pada kondisi normal Kontrol TextBox ini tidak terlihat (Properti .visible diset False), dan akan ditampilkan apa bila modusnya “Edit” (Ditandai dengan Even Double Click pada Kontrol MsFlexGrid) dengan mengambil nilai yang ada pada MsFlexGrid kedalam Kontrol TextBox. Nilai yang dikembalikan kedalam MsFlexGrid tergantung dari even KeyPressed pada Kontrol TextBox. ENTER maka nilainya akan dipindahkan kedalam MsFlexGrid, dan ESC jika ingin membatalkan pengeditan. Cukup sederhana bukan?.

Upss…satu masalah lagi sudah teratasi.😉
Untuk lebih jelasnya, perhatikan potongan dari listing program dibawah ini.

' Grid1     : Kontrol MsFlexGrid
' Text1     : Kontrol TextBox
' Keterangan: Pada contoh, kolom yang dapat diedit hanya kolom
'             ketiga yaitu kolom email, dimana index pada
'             MsFlexGrid bernilai 2.
Option Explicit

Private Sub cmdClose_Click()
  Unload Me
End Sub

Private Sub Form_Load()
  Dim i As Integer
  Grid1.Cols = 3
  Grid1.ColWidth(0) = 400
  Grid1.ColWidth(1) = 2200
  Grid1.ColWidth(2) = 2200
  Label1.Caption = "Form ini digunakan untuk " & _
    "membuat MsFlexGrid agar dapat diedit " & _
    "nilainya. Pada contoh hanya kolom email " & _
    "saja yang dapat diedit." & vbCrLf & _
    "emailto:supriyatna@mailandnews.com"
End Sub

Private Sub Grid1_DblClick()
  If Grid1.Col = 2 Then
    Text1.Top = Grid1.CellTop + Grid1.Top
    Text1.Left = Grid1.CellLeft + Grid1.Left

    Text1.Text = Grid1.Text
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)

    Text1.Visible = True
    Text1.Height = Grid1.CellHeight
    Text1.Width = Grid1.CellWidth
    Text1.SetFocus
  End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
    Grid1.Text = Text1.Text
    Text1.Visible = False
  ElseIf KeyAscii = 27 Then
    Text1.Visible = False
  End If
End Sub

Private Sub Text1_LostFocus()
  Text1.Visible = False
End Sub

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: