BMLekki
April 20th, 2001, 09:45 AM
I need a data grid that will allow entering data, valadation of a row, coloum, and edit data in cells..
Help!!
Thanks
Help!!
Thanks
|
Click to See Complete Forum and Search --> : Data Grid BMLekki April 20th, 2001, 09:45 AM I need a data grid that will allow entering data, valadation of a row, coloum, and edit data in cells.. Help!! Thanks Iouri April 20th, 2001, 11:20 AM You can use MSFlexGrid. Create a text box and/or combo box on a form and this code will position the text box over a cell and will give you possibility to edit the cell this is a sample project 'position a combo or Text box over a cell and type there ========================================== 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 Robert Moy April 20th, 2001, 08:52 PM Hello: You can use this code to do it with ADO and Datagrid Private Sub Form_Load() Adodc1.Recordset.Update Adodc1.Recordset.Requery Adodc1.Recordset.AddNew End Sub Good Luck codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |