Option Explicit
' µÑÇá»Ãà¡çº¤èÒ㹡ÒèѴàÃÕ§¢éÍÁÙÅ
' SortOrder = 1 ¤×Í ¡ÒèѴàÃÕ§¨Ò¡¹éÍÂä»ËÒÁÒ¡ (Ascending)
' SortOrder = 2 ¤×Í ¡ÒèѴàÃÕ§¨Ò¡ÁÒ¡ä»ËÒ¹éÍ (Descending)
Dim SortOrder As Byte
Private Sub Form_Load()
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
Call SetupfgData
Call DisplayfgData
' ¡Ó˹´¤èÒàÃÔèÁµé¹
SortOrder = 0
End Sub
' µÑ駤èҤسÊÁºÑµÔ (Properties) µèÒ§æãËé¡Ñº MS FlexGrid Ẻ Run - Time
Sub SetupfgData()
With fgData
.Clear
' ÁÕ Header 1 á¶Ç
.FixedRows = 1
.FixedCols = 0
' ãËéᶺáʧÂÒǵÒÁá¹Ç¹Í¹¢Í§áµèÅÐá¶Ç
.SelectionMode = flexSelectionByRow
' µÑ駤èÒ¤ÇÒÁÊÙ§µèÓÊØ´¢Í§áµèÅÐá¶Ç
.RowHeightMin = 285
' äÁèÂÍÁãËé¼Ùéãªé¤ÅÔê¡ÂèÍ - ¢ÂÒ¤ÇÒÁ¡ÇéÒ§¢Í§áµèÅÐËÅÑ¡
.AllowUserResizing = flexResizeNone
' ¡Ó˹´ 5 ËÅÑ¡
.Cols = 5
' ¡Ó˹´ 1 á¶Ç (ÊÓËÃѺ Header)
.Rows = 1
' ¡Ó˹´ Header
.TextMatrix(0, 0) = "ProductPK" ' »¡µÔàÃÒ¤Çëè͹ Primary Key äÇé·ÕèËÅÑ¡ 0 - DataBase
.TextMatrix(0, 1) = "ÅӴѺ·Õè"
.TextMatrix(0, 2) = "ÃËÑÊÊÔ¹¤éÒ"
.TextMatrix(0, 3) = "Çѹ·ÕèÃѺÊÔ¹¤éÒ"
.TextMatrix(0, 4) = "ÃÒ¤Ò"
' ãËéËÅÑ¡·Õè 2 (ÃËÑÊÊÔ¹¤éÒ) áÊ´§µÓá˹觪Դ«éÒÂ
.ColAlignment(2) = vbLeftJustify
.ColWidth(0) = 0
.ColWidth(1) = 650
.ColWidth(2) = 1400
.ColWidth(3) = 2200
.ColWidth(4) = 2150
End With
End Sub
' ãÊè¢éÍÁÙŵÑÇÍÂèҧŧä»ã¹ MS FlexGrid
Sub DisplayfgData()
Dim i As Integer
fgData.Rows = 6
For i = 1 To 5
With fgData
.TextMatrix(i, 0) = i
.TextMatrix(i, 1) = i
.TextMatrix(i, 2) = Right$("0000000" & i, 7)
.TextMatrix(i, 3) = FormatDateTime(Now() + i, vbShortDate)
.TextMatrix(i, 4) = 6 - i
End With
Next
' Íѹ¹Õé¼Áਵ¹ÒãÊèÃÒ¡ÒÃÁÒÁÑèÇàͧ à¾×èÍãËéàË繼Ţͧ¡ÒèѴàÃÕ§ä´éÍÂèÒ§ªÑ´à¨¹
fgData.TextMatrix(2, 3) = "05/02/52"
fgData.TextMatrix(3, 4) = 9
End Sub
' à˵ءÒóìÊÓ¤Ñ ... àÁ×èͤÅÔê¡àÁÒÊì«éÒÂŧº¹ MS FlexGrid
Private Sub fgData_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
' ¡Ãкǹ¡ÒÃá¹Ç¤Ô´áººµ×鹿 ... ÊÐÍ×é¹·Ãǧ ... 55555+ ... ÍÂÒ¡ÃÙéÇèÒ¼Ùéãªé¤ÅÔê¡·Õè Header ËÃ×ÍäÁè ?????
' µÃǨÊͺµÓá˹觢ͧàÁÒÊì·ÕèªÕéä»á¡¹ y ¨ÐµéͧÁÕ¤èÒ¹éÍ¡ÇèÒ¤ÇÒÁÊÙ§¢Í§á¶Çáá (Header)
' ¹Ñ蹡ç¤×Í ... ¼Ùéãªé¤ÅÔê¡àÅ×Í¡ Header Âѧä§ÅèФÃѺ ... ¾Õè¹éͧ ... äÁèàË繨ÐÂÒ¡àÅÂ
' Debug.Print "¤ÇÒÁÊÙ§á¶Çáá = " & fgData.RowHeight(0) & vbCrLf & "¾Ô¡Ñ´ y = " & y
If y < fgData.RowHeight(0) Then
' ÃкØËÅÑ¡·Õèãªé㹡ÒèѴàÃÕ§¢éÍÁÙÅ
fgData.Col = fgData.MouseCol
' ä»â»Ãá¡ÃÁÂèÍÂ㹡ÒèѴàÃÕ§¢éÍÁÙÅãËÁè
Call SortGrid
End If
End Sub
Private Sub SortGrid()
' ÅѡɳТͧ¡Òà Toggle ËÃ×Í ¡Ò÷ӧҹÊÅѺä»ÁÒ
' 1 = ¡ÒèѴàÃÕ§¨Ò¡¹éÍÂä»ËÒÁÒ¡ (Ascending - ASC)
' 2 = ¡ÒèѴàÃÕ§¨Ò¡ÁÒ¡ä»ËÒ¹éÍ (Descending - DESC)
' ËÒ¡à¤Â¨Ñ´àÃÕ§¨Ò¡ÁÒ¡ä»ËÒ¹éÍ (SortOrder = 2) ...
' µéͧŴ¤èÒŧ 1 à¾×èÍÊÅѺ¡ÒÃàÃÕ§¨Ò¡¹éÍÂä»ËÒÁÒ¡ ËÃ×Í SortOrder = 1
If SortOrder = 2 Then
SortOrder = SortOrder - 1
' ËÒ¡äÁèãªè 2 áÊ´§ÇèÒ¤èÒ SortOrder à»ç¹ 0 ËÃ×Í 1 ...
' ËÒ¡à»ç¹ 0 ¡çºÇ¡à¢éÒä»ÍÕ¡ 1 ¡ç¨Ðä´é 1 «Öè§à»ç¹¡ÒÃàÃÕ§Ẻ¹éÍÂä»ËÒÁÒ¡
' ËÒ¡à»ç¹ 1 ¡çºÇ¡à¢éÒä»ÍÕ¡ 1 ¡ç¨Ðä´é 2 «Öè§à»ç¹¡ÒÃàÃÕ§ẺÁÒ¡ä»ËÒ¹éÍÂ
Else
SortOrder = SortOrder + 1
End If
' ¨Ñ´àÃÕ§¤èÒµÒÁËÅÑ¡·Õè¡Ó˹´
fgData.Sort = SortOrder
' ãËéàáÊ´§á¶ºáʧã¹á¶Çááº¹ÊØ´
SendKeys "{DOWN}"
fgData.Col = 0
fgData.Row = 0
fgData.RowSel = 0
End Sub
|