Hi liebe Programmierergemeinde,
Ich hab en kleines Prob mti meinem MSFlexGrid, und zwar möchte ich dort eingaben machen und dass die Zellengröße sich richtig anpasst.
Ich bekomm es hin dass sich meine Zellen den Inhalt anpassen ...
ich bekomm es auch hin das ich Eingaben im MSFlexGrid machen kann
aber wie kombiniere ich diese zwei nützlichen Eigenschaften?
Code zum Zellen anpassen
Code zum Eingeben ins MsFlexGrid
Kann mir vielleicht jemand helfen?
Vielen liebe Dank im voraus
lg
Piti
Ich hab en kleines Prob mti meinem MSFlexGrid, und zwar möchte ich dort eingaben machen und dass die Zellengröße sich richtig anpasst.
Ich bekomm es hin dass sich meine Zellen den Inhalt anpassen ...
ich bekomm es auch hin das ich Eingaben im MSFlexGrid machen kann
aber wie kombiniere ich diese zwei nützlichen Eigenschaften?
Code:
Public Function Grid_AutoSize(oGrid As MSFlexGrid, oLabel As Label)
Dim nRow As Long
Dim nCol As Long
Dim nWidth As Long
Dim nMaxWidth As Long
' Setzen der Eigenschaften
With oLabel
' Wichtig!
.WordWrap = False
.AutoSize = True
End With
' Auswerten und Setzen der Grössen
With oGrid
For nCol = 0 To .Cols - 1
nMaxWidth = 0 ' .ColWidth(nCol)
.Col = nCol
For nRow = 0 To .Rows - 1
.Row = nRow
' Prüfen der Zellenformatierung und setzen der Eigenschaften für diese Zelle
With oLabel.Font
.Name = oGrid.CellFontName
.Size = oGrid.CellFontSize
.Bold = oGrid.CellFontBold
.Italic = oGrid.CellFontItalic
.Strikethrough = oGrid.CellFontStrikeThrough
.Underline = oGrid.CellFontUnderline
End With
oLabel.Caption = .TextMatrix(nRow, nCol)
nWidth = oLabel.Width
If nWidth + 100 > nMaxWidth Then nMaxWidth = nWidth + 100
Next nRow
.ColWidth(nCol) = nMaxWidth
Next nCol
End With
End Function
Code:
rivate Sub MSFlexGrid1_Click()
Call SizeText
Text1.Visible = True
Text1.SetFocus
End Sub
Private Sub MSFlexGrid1_GotFocus()
MSFlexGrid1_RowColChange
End Sub
Private Sub MSFlexGrid1_LeaveCell()
MSFlexGrid1.Text = Text1.Text
End Sub
Private Sub MSFlexGrid1_RowColChange()
Static OldRow%, OldCol%, Change As Boolean
If Change Then Exit Sub
Change = True
With MSFlexGrid1
If .Col <> OldCol Or .Row <> OldRow Then
OldRow = .Row
OldCol = .Col
Call SizeText
Text1.Visible = True
Text1.SetFocus
End If
End With
Change = False
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
Select Case KeyCode
Case vbKeyRight
If .Col + 2 > .Cols And .Row + 1 < .Rows Then
.Col = 1
.Row = .Row + 1
ElseIf .Col + 1 < .Cols And .Row < .Rows Then
.Col = .Col + 1
End If
Case vbKeyUp
If .Row - 1 > 0 Then .Row = .Row - 1
Case vbKeyDown, vbKeyReturn
If .Row + 1 < .Rows Then .Row = .Row + 1
Case vbKeyLeft
If .Col - 1 = 0 And .Row - 1 <> 0 Then
.Col = .Cols - 1
.Row = .Row - 1
ElseIf .Col - 1 <> 0 Then
.Col = .Col - 1
End If
End Select
End With
MSFlexGrid1_RowColChange
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then KeyAscii = 0
If KeyAscii = vbKeyTab Then
Call Text1_KeyDown(vbKeyRight, 0)
KeyAscii = 0
End If
End Sub
Private Sub Text1_LostFocus()
Text1.Visible = False
Call MSFlexGrid1_RowColChange
End Sub
Private Sub SizeText()
With MSFlexGrid1
Text1.Text = .Text
Text1.FontSize = .Font.Size
Text1.Height = .CellHeight
If .CellLeft + .CellWidth > .Width Then
Text1.Width = .Width - .CellLeft
Else
Text1.Width = .CellWidth
End If
Text1.Left = .CellLeft + .Left
Text1.Top = .CellTop + .Top
End With
End Sub
Kann mir vielleicht jemand helfen?
Vielen liebe Dank im voraus
lg
Piti