ÊÓËÃѺ§Ò¹â»Ãá¡ÃÁÁÔè§ Áѹ¤§à»ç¹§Ò¹·ÕèËÅÒµèÍËÅÒ¤¹ ÁͧÇèÒÁѹà»ç¹àÃ×èͧ¢Í§ à·¤â¹âÅ¡ÕÂì àÍê ෤â¹âÅÂÕ à»ç¹ËÅÑ¡«èÐÁÒ¡¡ÇèÒ áµèÊÓËÃѺÁØÁÁͧ¢Í§¼Á (áÅоǡª¹¡ÅØèÁ¹éÍÂæ ... Âѧæ¤ÃѺ ÂѧÁÕá¹ÇÃèÇÁÍÕ¡) ¡ÅѺÁͧÇèÒ Áѹà»ç¹àÃ×èͧ¢Í§ "¨Ô¹µ¹Ò¡ÒÃ" ÍÂèÒ§ÁÕÈÔŻР·ÕèáͺὧÁÒ (àÅç¡æ) ËÒ¡à»ÃÕºà·Õº¡Ñº¤Óä·Âæ ¡ç¤§äÁèµèҧ仨ҡ¡Ñº¤ÓÇèÒ "à»ç¹àÃ×èͧ¢Í§ÈÒʵÃì áÅÐ ÈÔÅ»ì" ÍÐäûÃÐÁÒ³¹Ñé¹áËÅФÃѺ ... ¾Õè¹éͧ
áËÁ ... Áѹ¡ç¤§¨ÐµéͧÁÕà赯 ÁռŠ¡Ñ¹¹Ñè¹áËÅÐ àÃÒÅͧÁÒ´ÙµÑÇÍÂèÒ§¡Ñ¹
µÒÃÒ§¡ÃÔ´ (Grid) à»ç¹ Control µÑÇÊÓ¤ÑÍÕ¡µÑÇ˹Öè§·Õè¨Óà»ç¹µéͧãªé§Ò¹ã¹ Visual Basic à»ç¹ÍÂèÒ§ÂÔè§ à¾×è͹ÓÁÒáÊ´§¼Å¢éÍÁÙÅ ËÒ¡ºÒ§·èÒ¹¹Ö¡äÁèÍÍ¡ ¡çÅͧ¹Ö¡¶Ö§ÀÒ¾¢Í§ Excel ¹Ñè¹ä§¤ÃѺ à¾ÃÒÐÁѹ¨ÐÁÕá¶Ç (Row) áÅÐ ËÅÑ¡ (Column) â´ÂÊèǹãËè Grid ¨Ð¶Ù¡¹ÓÁÒãªéã¹àÃ×èͧ¢Í§°Ò¹¢éÍÁÙÅ áµè·ÇèÒ »ÑËҢͧ Grid (äÁè¹Ñº¾Ç¡·Õèà»ç¹ ADO Grid Bound Control ¨Ó¾Ç¡¹Õé "§èÒÂ" µèÍ¡Òô֧¢éÍÁÙÅÁÒáÊ´§¼Å áÅÐ á¡éä¢ä´é áµè "ÂÒ¡" µèÍ¡ÒäǺ¤ØÁ) ¡ç¤×ÍÇèÒ "ÁѹáÊ´§¼Åä´éÍÂèÒ§à´ÕÂÇ" «Ö觨ÐäÁèÊÒÁÒöà¢éÒä»á¡é䢢éÍÁÙŵèÒ§æ·ÕèÍÂÙèã¹ Cell ã´æä´éàÅ ... ¹ÕèáËÅФ×Í "»ÑËÒ"
"»ÑËÒÁÒ »ÑÒÁÕ" ... Íѹ´Ñºáá "¨Ô¹µ¹Ò¡ÒÃ" ¡Ñ¹¡è͹ÅèÐ
- àÃÒÊÒÁÒöËÒµÓá˹觢ͧ Cell ä´éËÃ×ÍäÁèÇèÒÁѹÍÂÙè·Õè á¶Çã´ ËÅÑ¡ã´
- àÃÒÊÒÁÒöà¤Å×è͹ÂéÒ Cell µèÒ§æ ä´éËÃ×ÍäÁè ´éÇÂàÁÒÊì ¡Ð á»é¹¾ÔÁ¾ì ...
 ¼Å¨Ò¡¡Ò÷´Êͺ
' Code ·Õèãªé·´Êͺ Private Sub fg_Click() MsgBox "á¶Ç·Õè " & fg.Row & " áÅÐ " & "ËÅÑ¡·Õè " & fg.Col & vbCrLf & "Left=" & fg.CellLeft & vbCrLf & "Top=" & fg.CellTop End Sub
·ÓäÁàËÃͤÃѺ ... ÊÔè§·ÕèµéͧÁÒ¹Ñè§¹Ö¡¶Ö§¡ç¤×ÍàÃ×èͧ¢Í§ "¤Ø³ÊÁºÑµÔ - Properties" »ÃШӵÑǢͧ¾Ç¡ Control àËÅèÒ¹Õé䧤ÃѺ à¾ÃÒÐÁѹà»ç¹µÒÃÒ§¡ÃÔ´ «Öè§µéͧÁÕ¡ÒÃÍéÒ§ÍÔ§ã¹àÃ×èͧ¢Í§ Cell ÍÂÙèáÅéǹéҹ䧤ÃѺ¾Õè¹éͧ ´Ñ§¹Ñé¹àÃÒ¨Ö§¾Øè§à»éÒä»·Õè¡ÒÃà¤Å×è͹·Õè áÅÐ ËÒµÓá˹觢ͧã¹áµèÅÐ Cell ... áÅéÇËÒä»äÁ ã¹¢³Ð·ÕèãªéÊÒµÒÍ͡Ẻ à¾è§àÅç§ ¡ÐäÍéà¨éÒ¤ÍÁ¾ÔÇàµÍÃìÍÂÙèà¹ÕèÂÐ ÁѹÂѧ¹Ö¡äÁèÍÍ¡ËÃÍ¡¤ÃѺ à¾Õ§áµèàËÅèä» àËÅèÁÒ áÅÐáÅéÇ (¹éͧ) ¿éÒ¡çàÁµµÒ »ÃÒ³Õ Áѹ¡çàžͨÐÁͧàËç¹ÍÐäÃæºÒ§ÍÂèÒ§ÅÒ§æáÅéǤÃѺ¾Õè¹éͧ ¡ÅèÒǤ×Í ¡ÒÃà¤Å×è͹·Õè¢Í§ Cell Áѹ¡çàÅ·ÓãËé¹Ö¡¶Ö§àÃ×èͧ "Method - ÇÔ¸Õ¡ÒÃ" ÍÂèҧ˹Öè§¢Öé¹ÁÒ ¹Ñ蹤×Í "Move" ¤ÃѺ¡ÃмÁ
àÁ×èÍÁÒ¶Ö§¨Ø´¹Õé»Ñêº ... ¡çµéͧ "¨Ô¹µ¹Ò¡ÒÃ" ¡Ñ¹ÍÕ¡µèÍä» ËÒ¡àÃÒàÅ×Í¡µÓáË¹è§ Cell ·ÕèàÃÒµéͧ¡ÒÃä´éáÅéǹÑé¹ áÅéÇÅͧàÅ×è͹µÓá˹觢ͧ TextBox à¢éÒä»»Ô´·Ñº ³ µÓá˹觹Ñé¹ à¾×èÍ»é͹¢éÍÁÙÅà¢éÒä» áÅÐàÁ×èÍ»é͹àÊÃç¨àÃÕºÃéÍ (à¡Ô´à˵ءÒóì Event - Change) ¡ç¨ÐµéͧºÑ§¤ÑºãËéÁѹä»à»ÅÕè¹á»Å§¤èÒ·ÕèÍÂÙèã¹ Cell ·ÕèàÃÒµéͧ¡ÒùÑé¹ ... ÁѹÁÕâÍ¡ÒÊ ËÃ×Í ¤Ô´ÇèÒ¨Ðà»ç¹ä»ä´éËÃ×ÍäÁè ???
¤ÓµÍº: à»ç¹ä»ä´é à¾ÃÒÐÇèÒ àÃÒÊÒÁÒö·Õè¨ÐãÊè¤èÒµèÒ§æÅ§ä»ã¹ Cell ä´éÍÂÙèáÅéǹÕè¹Ò ´éǤÓÊÑè§ fg.TextMatrix(á¶Ç·Õèµéͧ¡ÒÃ, ËÅÑ¡·Õèµéͧ¡ÒÃ) = "¢éͤÇÒÁ" ËÃ×Í fg.Text = "¢éͤÇÒÁ"
¼Å¨Ò¡¡Ò÷ӧҹ¢Í§â»Ãá¡ÃÁ
´Ñ§¹Ñ鹡çàÃÔèÁµé¹Å§Á×Í·ÓµÒÁ·Õèä´é¨Ô¹µ¹Ò¡ÒÃàÍÒäÇé
Íѹ´ÑºááàÅ×Í¡ Component à¢éÒÁÒ¡è͹价Õè Project --> Components...
 àÅ×Í¡ Components
Microsoft FlexGrid Control 6.0
µèÍ仡ç·Ó¡ÒÃÅÒ¡ Control ÍÍ¡ÁÒ 2 µÑÇ »ÃСͺ´éÇÂ
- MS FlexGrid Control
- TextBox
Properties ËÃ×Í ¤Ø³ÊÁºÑµÔ·ÕèÊÓ¤ÑÊÓËÃѺ Control áµèÅеÑÇ Áմѧ¹Õé¤×Í (Design-Time)
MS FlexGrid
- Name: fg
- Fixed Rows: 1
- Fixed Cols: 0
- Rows: 2
- Cols: 4
TextBox
- Name: Text1
- Text: Text1
- Visible: False µéͧ»Ô´¡ÒÃáÊ´§¼Å¡è͹¤ÃѺ¼Á
º··´Êͺ
¨Ò¡ÀÒ¾´éÒ¹º¹ÊØ´¹Ùé¹ ÊÁÁصÔÇèÒ¼Áµéͧ¡Ò÷Õè¨Ðá¡é䢤èÒµèÒ§æ ã¹ËÅÑ¡·Õè 3 à·èÒ¹Ñé¹ (ÃÒ¤Ò) ã¹á¶Çã´æ ¡çä´é ÊèǹËÅÑ¡Í×è¹æäÁèà¡ÕèÂÇáÅéǡѹ¤ÃѺ¼Á ...
àÃÔèÁµé¹¡Ãкǹ¡ÒÃâ¤é´â»Ãá¡ÃÁ
Event/Driven à˵ءÒóì¹ÕéáËÅФÃѺ ¤×Í ¡ÒáÓ˹´µÓá˹觢ͧ Cell ·ÕèàÃÒµéͧ¡ÒèÐà»ÅÕè¹á»Å§
Private Sub fg_EnterCell() ' ¾Ô¨ÒóҨҡà˵ءÒóì (Event) 㹡Òà Focus µÃ§µÓá˹è§ã¹ Cell Select Case fg.Col ' àÅ×Í¡ Column ·Õèµéͧ¡Òà Case 0, 1, 2: ' àÃÒäÁèä´é»é͹¢éÍÁÙÅã¹ËÅÑ¡·Õè 0, 1 áÅÐ 2 Text1.Visible = False ' ¨Ö§µéͧÊÑè§ãËé»Ô´¡ÒÃÁͧàËç¹ Text1
Case 3: ' âÍठ¶Ù¡µéͧ Cell ·Õè¡ÓÅѧ Focus ÁÒÍÂÙèËÅÑ¡·Õè 3 ¡çàÃÔèÁµé¹¡Ãкǹ¡Ò÷ӧҹä´é Text1.Visible = True ' à»Ô´ãËé Text1 ÁͧàËç¹ä´é Text1.Text = fg.Text ' ¤èÒà´ÔÁ·ÕèÍÂÙèã¹ Cell ¨Ð¶Ù¡Êè§µèÍä»ãËé Text1 à¾×èÍ·Ó¡ÒÃá¡é䢵èÍä»
' ¢Ñ鹵͹¹Õé¤×Í¡ÒÃàÅ×è͹µÓá˹觢ͧ Text1 ãËé价ѺÍÂÙ躹µÓá˹觢ͧ Cell (ËÅÑ¡·Õè¡Ó˹´) µÒÁ·ÕèàÃÒµéͧ¡Òà ' ¡ÒÃà¤Å×è͹·Õè â´Â fg.Move µÓá˹觷ҧ«éÒÂ, µÓá˹觺¹, ¤ÇÒÁ¡ÇéÒ§¢Í§à«ÅÅì, ¤ÇÒÁÊÙ§¢Í§à«ÅÅì Text1.Move fg.CellLeft, fg.CellTop, fg.CellWidth, fg.CellHeight
' àÁ×èÍ Text1 à¤Å×è͹·Õè价ѺµÓáË¹è§ Cell ·ÕèàÃÒµéͧ¡ÒÃáÅéÇ ãËé Focus ä»·Õè Text1 à¾×èÍ·Õè¨ÐÊÒÁÒöá¡é䢢éÍÁÙÅŧ㹠TextBox ä´é Text1.SetFocus End Select End Sub
Private Sub Form_Load() ' ÁÒ·´Êͺ·Õè¿ÍÃìÁËÅÑ¡ Dim sRow As Byte, i As Byte Call SetupGrid ' ÊÑè§µÑ駤èÒ FlexGrid Text1.Text = "" ' à¤ÅÕÂÃì¤èÒã¹ TextBox ' à»ç¹¢éÍÁÙÅÊÁÁصԢÖé¹ÁÒà¾×èÍ·´Êͺ¤ÃѺ For i = 0 To 4 With fg sRow = .Rows - 1 ' à¹×èͧ¨Ò¡á¶Ç·Õè¡Ó˹´ (Rows) ÁÕÍÂÙè 2 á¶Ç â´Âá¶Çº¹ÊØ´ ¤×Í á¶Ç 0 ¨Ðà»ç¹ Header Êèǹá¶ÇàÃÔèÁµé¹·ÕèµéͧàÃÔèÁãÊè¤èÒà¢éÒ令×Íá¶Ç·Õè 1 (1 = 2 - 1) .TextMatrix(sRow, 0) = "ÃËÑÊÊÔ¹¤éÒ " & i + 1 .TextMatrix(sRow, 1) = "ª×èÍÊÔ¹¤éÒ " & i + 10 .TextMatrix(sRow, 2) = "ÂÕèËéÍ " & i + 20 .TextMatrix(sRow, 3) = Format(i + 30, "#,##0.00") .Rows = .Rows + 1 ' à¾ÔèÁ¤èÒá¶Ç·Ñé§ËÁ´¢Öé¹ä»ÍÕ¡ 1 End With Next fg.Rows = fg.Rows - 1 ' ¤èҢͧá¶ÇÁѹ¨Ðà¡Ô¹ä» 1 à·èÒ¹Ñé¹àͧ ... Åͧá¡éâ¤é´´éÒ¹º¹´ÙáÅéǡѹ ÍÔÍÔ End Sub
Sub SetupGrid() ' µÑ駤èÒµèÒ§æ¢Í§ FlexGrid With fg .Clear ' ÊÑè§ Clear FlexGrid .Cols = 4 ' ¡ÒáÓ˹´ã¹ÃٻẺ¢Í§ Run Time ÎѺ¼Á .TextMatrix(0, 0) = "ÃËÑÊÊÔ¹¤éÒ" .TextMatrix(0, 1) = "ª×èÍÊÔ¹¤éÒ" .TextMatrix(0, 2) = "ÂÕèËéÍ" .TextMatrix(0, 3) = "ÃÒ¤Ò" .ColWidth(0) = 1200 .ColWidth(1) = 3200 .ColWidth(2) = 1000 .ColWidth(3) = 1250 End With End Sub
Private Sub Text1_Change() ' ' àÁ×èÍ Text1 à¡Ô´¡ÒÃà»ÅÕè¹á»Å§ ¡ç¨ÐÊ觤èÒãËé¡Ñº Cell ·ÕèàÃÒµéͧ¡ÒôéÇ áµè ³ ¢³Ð¹ÕéàÃÒÂѧÁͧäÁèàËç¹ËÃÍ¡¤ÃѺ à¾ÃÒÐ Text1 Áѹ·Ñº Cell äÇéÍÂÙè -- ÊÓÁФѹèеÑǹÕé fg.Text = Format(Text1.Text, "#,##0.00") End Sub |
à»ç¹ÍÂèÒ§äúéÒ§¤ÃѺ ¾Í¨ÐÁͧàËç¹·Ò§ÊÇèÒ§ (ÃÓäÃæ) ºéÒ§¹èФÃѺ ¡ÒûÃÐÂØ¡µìãªé§Ò¹¡çÁÕËÅÒ¡ËÅÒ µÑÇÍÂèÒ§àªè¹ ãºÃÒ¡ÒÃÊÑè§«×éÍ ãºàʹÍÃÒ¤Ò áººÊͺ¶ÒÁ ËÃ×Í ¨ÐàÍÒ ComboBox ÁÒãÊè àÍÒ DTPicker ÁÒá»Ðŧ (¢éÍÁÙÅà¾ÔèÁàµÔÁ ... ·Õè¹Õè) ÍÐäûÃÐÁÒ³¹ÕéáËÅÐ ¨Ò¡¹Ñ鹡ç¹Ó¢éÍÁÙÅ·ÕèÍÂÙè㹡ÃÔ´ àÍÒà¢éÒä»à¡çºÅ§ã¹°Ò¹¢éÍÁÙÅä´éÍÂèҧʺÒÂæ á¶ÁÍӹǤÇÒÁÊдǡãËéá¡è¼Ùéãªé§Ò¹ä´éÍÕ¡µÐËÒ¡ àÎéÍ ... á¤è¤Ô´¡çÁѹÊìáÅéÇ
º·ÊÃØ»
¨Ø´àÃÔèÁµé¹¢Í§§Ò¹ªÔé¹¹ÕéÁѹà¡Ô´¢Öé¹ÁÒ¨Ò¡ "¨Ô¹µ¹Ò¡ÒÃ" áÅéǹÓÁÒ¼ÊÁ¼ÊÒ¹à¢éҡѺ "¤ÇÒÁÃÙé×é¾×é¹°Ò¹¢Í§ Visual Basic" à¾×èÍÁÒãªé§Ò¹
Control ËÃ×Í Object
Properties - ¤Ø³ÊÁºÑµÔ»ÃШӵÑǢͧ Control ËÃ×Í Object
Method - ÇÔ¸Õ¡Òà àªè¹ ¡ÒÃà¤Å×è͹·Õè (Move) ¹ÕèáËÅФÃѺ
Event - Driven à¡Ô´à˵ءÒóìÍÐäâÖé¹ÁÒ áÅéǨÐãËéÁѹ价ÓÍÐäÃÅèÐ ...
áÅéǨÐÃÙéä´éä§ÅèÐà¹ÕèÂÐ ???
|