CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 6 of 6
  1. #1
    Join Date
    Sep 2001
    Posts
    6

    VB 6 - Flex Grid

    Hi, if anyone can help me,
    * how can I extract a value from a selected cell
    * how can I edit information from a selected cell in the flex grid
    * and finally, how can I transfer a selected row data from a flex grid into another flex grid using a command button i have created for it?


  2. #2

    Re: VB 6 - Flex Grid

    1)

    myflxgrid.col=1
    mtflxgrid.col=1
    debug.print mtflxgrid.value

    2)

    myflxgrid.col=1
    mtflxgrid.col=1
    mtflxgrid.value="test"

    3) ...i don't undestand




    <center>
    <HR width=80%>
    <img src='http://web.tiscali.it/bertaplanet/im...ertaplanet.gif'>
    </center>

  3. #3
    Join Date
    May 2000
    Location
    New York, NY, USA
    Posts
    2,878

    Re: VB 6 - Flex Grid

    * how can I extract a value from a selected cell
    Value = msfg.TextMatrix(Row,Col)

    * how can I edit information from a selected cell in the flex grid
    you cannot edit a cell directly. You can add textbox and/or combobox and when
    you want to edit the info, position textbox over a cell and enter info 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

    * and finally, how can I transfer a selected row data from a flex grid into another flex grid using a command button i have created
    for Row = 1 to 5
    for Col = 1 to 3
    msfg2.TextMatrix(Row,Col)=msfg1.TextMatrix(Row,Col)
    next Col
    next Row

    Iouri Boutchkine
    [email protected]
    Iouri Boutchkine
    [email protected]

  4. #4
    Join Date
    Sep 2001
    Posts
    6

    Re: VB 6 - Flex Grid

    thanks for you help, but do I have to give a row number and column number?
    It's just that the flex grid loads up automatically with records from a recordset, so how exactly is it going to be able to know which row has been selected? so that the record can be removed from there and added into another flex grid (it has to transfer all five fields)?
    Thank once again, I much appreciate it


  5. #5
    Join Date
    Sep 2001
    Posts
    6

    Re: VB 6 - Flex Grid

    thanks for you help, but do I have to give a row number and column number?
    It's just that the flex grid loads up automatically with records from a recordset, so how exactly is it going to be able to know which row has been selected? so that the record can be removed from there and added into another flex grid (it has to transfer all five fields)?
    Thanks once again, I appreciated it


  6. #6
    Join Date
    May 2000
    Location
    New York, NY, USA
    Posts
    2,878

    Re: VB 6 - Flex Grid

    Instead Row and Col you have to give row and col number. Look at the bootom part of the answer and you will see.

    Iouri Boutchkine
    [email protected]
    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
  •  





Click Here to Expand Forum to Full Width

Featured