|
-
June 21st, 2001, 08:34 AM
#1
msflexgrid
I want to edit the contets in msflexgrid. How do i?
-
June 21st, 2001, 08:54 AM
#2
Re: msflexgrid
There is no direct way to edit the cell in msfg. Here is the trick. You position the text box or combo box on the top of the cell and edit it. Then you copy the text box to the cell
'add text and combo box anywhere ono your form
==========================================
Option Explicit
Private Sub EndEdit()
'--------------------------
If Combo1.Visible Then
MSFlexGrid1.Text = Combo1.Text
Combo1.Visible = False
ElseIf Text1.Visible Then
MSFlexGrid1.Text = Text1.Text
Text1.Visible = False
End If
End Sub
Private Sub StartEdit()
'--------------------------
If MSFlexGrid1.Col = 2 Then
Combo1.Clear
Combo1.AddItem "Paranoia City"
Combo1.AddItem "Langonsville"
Combo1.AddItem "Codertown"
Combo1.AddItem "Bugvanna"
Combo1.AddItem "Abend"
On Error Resume Next
Combo1.Text = MSFlexGrid1.Text
On Error GoTo 0
GridEditCombo
ElseIf MSFlexGrid1.Col = 3 Then
Combo1.Clear
Combo1.AddItem "CA"
Combo1.AddItem "VT"
Combo1.AddItem "MN"
Combo1.AddItem "WY"
Combo1.AddItem "TX"
On Error Resume Next
Combo1.Text = MSFlexGrid1.Text
On Error GoTo 0
GridEditCombo
Else
GridEditText Asc(" ")
End If
End Sub
' Make the change.
Private Sub Combo1_Click()
'--------------------------
MSFlexGrid1.SetFocus
End Sub
Private Sub Form_Load()
'--------------------------
Dim r As Integer
Dim c As Integer
Dim max_len As Single
Dim new_len As Single
' Use no border.
Text1.BorderStyle = vbBSNone
' Make the grid's cell height match
' that of the ComboBox.
MSFlexGrid1.RowHeightMin = Combo1.Height
' Match the grid's font.
Text1.FontName = MSFlexGrid1.FontName
Text1.FontSize = MSFlexGrid1.FontSize
Text1.Visible = False
Combo1.FontName = MSFlexGrid1.FontName
Combo1.FontSize = MSFlexGrid1.FontSize
Combo1.Visible = False
' Create some data.
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Cols = 5
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.Rows = 6
MSFlexGrid1.TextMatrix(0, 0) = "Name"
MSFlexGrid1.TextMatrix(0, 1) = "Street"
MSFlexGrid1.TextMatrix(0, 2) = "City"
MSFlexGrid1.TextMatrix(0, 3) = "State"
MSFlexGrid1.TextMatrix(0, 4) = "Zip"
MSFlexGrid1.TextMatrix(1, 0) = "Andy Avaricious"
MSFlexGrid1.TextMatrix(1, 1) = "827 Problem Blvd"
MSFlexGrid1.TextMatrix(1, 2) = "Paranoia City"
MSFlexGrid1.TextMatrix(1, 3) = "CA"
MSFlexGrid1.TextMatrix(1, 4) = "98765"
MSFlexGrid1.TextMatrix(2, 0) = "Betty Boisterous"
MSFlexGrid1.TextMatrix(2, 1) = "4352 Main St Apt 254"
MSFlexGrid1.TextMatrix(2, 2) = "Langonsville"
MSFlexGrid1.TextMatrix(2, 3) = "VT"
MSFlexGrid1.TextMatrix(2, 4) = "01234"
MSFlexGrid1.TextMatrix(3, 0) = "Charles Cheerful"
MSFlexGrid1.TextMatrix(3, 1) = "89 North A Ln"
MSFlexGrid1.TextMatrix(3, 2) = "Codertown"
MSFlexGrid1.TextMatrix(3, 3) = "MN"
MSFlexGrid1.TextMatrix(3, 4) = "54583"
MSFlexGrid1.TextMatrix(4, 0) = "Denise Delightful"
MSFlexGrid1.TextMatrix(4, 1) = "89 75th"
MSFlexGrid1.TextMatrix(4, 2) = "Bugvanna"
MSFlexGrid1.TextMatrix(4, 3) = "WY"
MSFlexGrid1.TextMatrix(4, 4) = "82738"
MSFlexGrid1.TextMatrix(5, 0) = "Ed Enlightened"
MSFlexGrid1.TextMatrix(5, 1) = "2765 N South St E"
MSFlexGrid1.TextMatrix(5, 2) = "Abend"
MSFlexGrid1.TextMatrix(5, 3) = "TX"
MSFlexGrid1.TextMatrix(5, 4) = "67583"
' Size the columns.
Font.Name = MSFlexGrid1.Font.Name
Font.Size = MSFlexGrid1.Font.Size
For c = 0 To MSFlexGrid1.Cols - 1
max_len = 0
For r = 0 To MSFlexGrid1.Rows - 1
new_len = TextWidth(MSFlexGrid1.TextMatrix(r, c))
If max_len < new_len Then max_len = new_len
Next r
MSFlexGrid1.ColWidth(c) = max_len + 240
MSFlexGrid1.ColAlignment(c) = flexAlignLeftCenter
Next c
MSFlexGrid1.AllowUserResizing = flexResizeBoth
End Sub
Private Sub GridEditText(ByVal KeyAscii As Integer)
'--------------------------
' Position the TextBox over the cell.
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
Select Case KeyAscii
Case 0 To Asc(" ")
Text1.Text = MSFlexGrid1.Text
Text1.SelStart = Len(Text1.Text)
Case Else
Text1.Text = Chr$(KeyAscii)
Text1.SelStart = 1
End Select
End Sub
Private Sub GridEditCombo()
'--------------------------
' Position the ComboBox over the cell.
Combo1.Left = MSFlexGrid1.CellLeft + MSFlexGrid1.Left
Combo1.Top = MSFlexGrid1.CellTop + MSFlexGrid1.Top
Combo1.Width = MSFlexGrid1.CellWidth
Combo1.Visible = True
Combo1.SetFocus
End Sub
Private Sub Form_Resize()
MSFlexGrid1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
'--------------------------
Select Case KeyCode
Case vbKeyEscape
' Leave the text unchanged.
Text1.Visible = False
MSFlexGrid1.SetFocus
Case vbKeyReturn
' Finish editing.
MSFlexGrid1.SetFocus
Case vbKeyDown
' Move down 1 row.
MSFlexGrid1.SetFocus
DoEvents
If MSFlexGrid1.Row < MSFlexGrid1.Rows - 1 Then
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
End If
Case vbKeyUp
' Move up 1 row.
MSFlexGrid1.SetFocus
DoEvents
If MSFlexGrid1.Row > MSFlexGrid1.FixedRows Then
MSFlexGrid1.Row = MSFlexGrid1.Row - 1
End If
End Select
End Sub
' Do not beep on Return or Escape.
Private Sub Text1_KeyPress(KeyAscii As Integer)
'--------------------------
If (KeyAscii = vbKeyReturn) Or _
(KeyAscii = vbKeyEscape) _
Then KeyAscii = 0
End Sub
Private Sub MSFlexGrid1_DblClick()
'--------------------------
StartEdit
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
'--------------------------
If MSFlexGrid1.Col <> 2 And _
MSFlexGrid1.Col <> 3 _
Then
GridEditText KeyAscii
End If
End Sub
Private Sub MSFlexGrid1_LeaveCell()
'--------------------------
EndEdit
End Sub
Private Sub MSFlexGrid1_GotFocus()
'--------------------------
EndEdit
End Sub
Iouri Boutchkine
[email protected]
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|