WOTR
June 21st, 2001, 08:34 AM
I want to edit the contets in msflexgrid. How do i?
|
Click to See Complete Forum and Search --> : msflexgrid WOTR June 21st, 2001, 08:34 AM I want to edit the contets in msflexgrid. How do i? Iouri June 21st, 2001, 08:54 AM 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 iouri@hotsheet.com codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |