回答
有一種使用隱藏文本框的方法。在單元上的雙擊文本框將是可見的,編輯可能這裏是代碼段檢查
Private Sub Form_Load()
'Setting Col And row
MSFlexGrid1.Cols = 3
MSFlexGrid1.Rows = 10
'First row
MSFlexGrid1.TextMatrix(0, 0) = "ID"
MSFlexGrid1.TextMatrix(0, 1) = "Date"
MSFlexGrid1.TextMatrix(0, 2) = "Voucher Type"
'some data
MSFlexGrid1.TextMatrix(1, 0) = "E0000001"
MSFlexGrid1.TextMatrix(2, 0) = "E0000001"
MSFlexGrid1.TextMatrix(1, 1) = "01/04/10"
MSFlexGrid1.TextMatrix(2, 1) = "01/04/10"
MSFlexGrid1.TextMatrix(1, 2) = "Jrnl"
MSFlexGrid1.TextMatrix(2, 2) = "Jrnl"
End Sub
Private Sub MSFlexGrid1_DblClick()
'If MSFlexGrid1.Col = 3 Or MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then
GridEdit Asc(" ")
'End If
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
GridEdit KeyAscii
End Sub
Sub GridEdit(KeyAscii As Integer)
'use correct font
Text1.FontName = MSFlexGrid1.FontName
Text1.FontSize = MSFlexGrid1.FontSize
Select Case KeyAscii
Case 0 To Asc(" ")
Text1 = MSFlexGrid1
Text1.text = Trim(Text1.text)
Text1.SelStart = 1000
Case Else
Text1 = MSFlexGrid1
Text1.text = Trim(Text1.text)
Text1.SelStart = 1000
End Select
'position the edit box
Text1.Left = MSFlexGrid1.CellLeft + MSFlexGrid1.Left
Text1.Top = MSFlexGrid1.CellTop + MSFlexGrid1.Top
Text1.Width = MSFlexGrid1.CellWidth
Text1.Height = MSFlexGrid1.CellHeight
Text1.Visible = True
Text1.SetFocus
End Sub
Private Sub MSFlexGrid1_LeaveCell()
If Text1.Visible Then
If MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then
If Text1.text = "" Then
Text1.text = " "
End If
End If
MSFlexGrid1 = Text1
Text1.Visible = False
End If
End Sub
Private Sub MSFlexGrid1_GotFocus()
If Text1.Visible Then
If MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then
If Text1.text = "" Then
Text1.text = " "
End If
End If
MSFlexGrid1 = Text1.text
Text1.Visible = False
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
'noise suppression
If MSFlexGrid1.Col <> 6 And MSFlexGrid1.Col <> 7 Then
KeyAscii = 0
End If
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
End If
End Sub
這是否照顧表格上的tabbing? – wqw
我已經停止了除MSFlexgrid之外的所有TabStop,並且我已經編寫了一個代碼我想要的Tab鍵上。 –
我在'Text1_KeyPress'的第二個If塊中添加了'Call MSFlexGrid1_LeaveCell',這樣編輯模式就按下了返回鍵。在'Text1_LostFocus'中也一樣。 –
你也可以嘗試下面的代碼。這不需要文本框。
'Put this code in MSFlexGrid Keypress Event
'===================================================
Private Sub MSFlexGrid_KeyPress(KeyAscii As Integer)
With MSFlexGrid
Select Case KeyAscii
Case 8: 'IF KEY IS BACKSPACE THEN
If .Text <> "" Then .Text = _
Left$(.Text, (Len(.Text) - 1))
Case 13: 'IF KEY IS ENTER THEN
Select Case .Col
Case Is < (.Cols - 1):
SendKeys "{right}"
Case (.Cols - 1):
If (.Row + 1) = .Rows Then
.Rows = .Rows + 1
End If
SendKeys "{home}" + "{down}"
End Select
Case Else
.Text = .Text + Chr$(KeyAscii)
'write your own keyascii Validations under
'commented lines
Select Case .Col
Case 0, 1, 2:
'if (your condition(s)) then
'accept only charectors
'Else
' keyascii=0
'End If
Case Else:
End Select
End Select
End With
End Sub
抱歉以不正確的方式放置代碼。請注意下次 – DevelopmentIsMyPassion
如果有人想用箭頭鍵導航光標而不是工作。 –
如果你能以某種方式顯示哪個單元格有焦點,會不錯。 –
- 1. VB6 MSFlexGrid - 合併列的ColPos
- 2. 將VB6 MSFlexGrid升級到VB.NET
- 3. 用VB6在單元格中打印msflexgrid
- 4. msflexgrid Unicode
- 5. 如何從VB6獲取圖像MSFlexGrid OLEDragDrop事件
- 6. 如何解決VB6中的MSFlexGrid錯誤30006
- 7. 將vb6項目遷移到vb.net項目(包括MSFlexGrid到datagridview)
- 8. 編程邏輯升級從VB6到Vb.net
- 9. 註冊表項編輯vb6啓動
- 10. VB6錯誤:無法編輯模塊
- 11. 逐行編輯文本文件VB6
- 12. vb6和msflexgrid,如何統計剪貼板文本中的列和行
- 13. 帶有MSFlexgrid的MS Access表
- 14. MSflexgrid到XML文件轉換
- 15. datagridview,msflexgrid的替代品
- 16. VB6串口編程
- 17. 如何編輯VB6中特定幀上的GUI元素
- 18. 我應該使用什麼框架來編輯VB6項目?
- 19. 如何在IDE中編輯VB6表單上的菜單?
- 20. 使用Sax解析在VB6中編輯和寫入XML
- 21. 如何使用VB.NET或VB6編輯註冊表項?
- 22. MSFlexgrid中的下標超出範圍
- 23. 編譯時VB6錯誤
- 24. 編譯C#.NET的DLL VB6
- 25. vb6中的字符編碼
- 26. 編程方式使用VB6
- 27. vb6便攜式編譯
- 28. 編組了VB6和.NET
- 29. GWT編輯和副編輯
- 30. Fck編輯器多編輯
舊的VB5殘留MSFlexGrid和改進的VB6 MSHFlexgrid都是「顯示」控件,不提供任何用戶數據輸入或編輯功能。您必須編寫代碼,以便在「編輯」時將單元格TextBox「浮動」到單元格上,否則將移至舊的DBGrid或更新的DataGrid控件。 – Bob77