Option Explicit Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long Const EM_GETLINECOUNT = &HBA Private Sub Command1_Click()
Dim ColLoop As Long
Dim RowLoop As Long 'Turn off redrawing to avoid flickering
MSFlexGrid1.Redraw = False For ColLoop = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.ColWidth(ColLoop) = 2500 For RowLoop = 0 To MSFlexGrid1.Rows - 1
ReSizeCellHeight RowLoop, ColLoop
Next RowLoop
Next ColLoop 'Turn redrawing back on
MSFlexGrid1.Redraw = True
End Sub Public Sub ReSizeCellHeight(MyRow As Long, MyCol As Long)
Dim LinesOfText As Long
Dim HeightOfLine As Long 'Set MSFlexGrid to appropriate Cell
MSFlexGrid1.Row = MyRow
MSFlexGrid1.Col = MyCol 'Set textbox width to match current width of selected cell
Text1.Width = MSFlexGrid1.ColWidth(MyCol) 'Set font info of textbox to match FlexGrid control
Text1.Font.Name = MSFlexGrid1.Font.Name
Text1.Font.Size = MSFlexGrid1.Font.Size
Text1.Font.Bold = MSFlexGrid1.Font.Bold
Text1.Font.Italic = MSFlexGrid1.Font.Italic
Text1.Font.Strikethrough = MSFlexGrid1.Font.Strikethrough
Text1.Font.Underline = MSFlexGrid1.Font.Underline 'Set font info of form to match FlexGrid control
Me.Font.Name = MSFlexGrid1.Font.Name
Me.Font.Size = MSFlexGrid1.Font.Size
Me.Font.Bold = MSFlexGrid1.Font.Bold
Me.Font.Italic = MSFlexGrid1.Font.Italic
Me.Font.Strikethrough = MSFlexGrid1.Font.Strikethrough
Me.Font.Underline = MSFlexGrid1.Font.Underline 'Put the text from the selected cell into the textbox
Text1.Text = MSFlexGrid1.Text 'Get the height of the text in the textbox
HeightOfLine = Me.TextHeight(Text1.Text) 'Call API to determine how many lines of text are in text box
LinesOfText = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0&, 0&) 'Check to see if row is not tall enough
If MSFlexGrid1.RowHeight(MyRow) < (LinesOfText*HeightOfLine) Then
'Adjust the RowHeight based on the number of lines in textbox
MSFlexGrid1.RowHeight(MyRow) = LinesOfText * HeightOfLine
End If
End Sub
"SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long Const EM_GETLINECOUNT = &HBA Private Sub Command1_Click()
Dim ColLoop As Long
Dim RowLoop As Long 'Turn off redrawing to avoid flickering
MSFlexGrid1.Redraw = False For ColLoop = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.ColWidth(ColLoop) = 2500 For RowLoop = 0 To MSFlexGrid1.Rows - 1
ReSizeCellHeight RowLoop, ColLoop
Next RowLoop
Next ColLoop 'Turn redrawing back on
MSFlexGrid1.Redraw = True
End Sub Public Sub ReSizeCellHeight(MyRow As Long, MyCol As Long)
Dim LinesOfText As Long
Dim HeightOfLine As Long 'Set MSFlexGrid to appropriate Cell
MSFlexGrid1.Row = MyRow
MSFlexGrid1.Col = MyCol 'Set textbox width to match current width of selected cell
Text1.Width = MSFlexGrid1.ColWidth(MyCol) 'Set font info of textbox to match FlexGrid control
Text1.Font.Name = MSFlexGrid1.Font.Name
Text1.Font.Size = MSFlexGrid1.Font.Size
Text1.Font.Bold = MSFlexGrid1.Font.Bold
Text1.Font.Italic = MSFlexGrid1.Font.Italic
Text1.Font.Strikethrough = MSFlexGrid1.Font.Strikethrough
Text1.Font.Underline = MSFlexGrid1.Font.Underline 'Set font info of form to match FlexGrid control
Me.Font.Name = MSFlexGrid1.Font.Name
Me.Font.Size = MSFlexGrid1.Font.Size
Me.Font.Bold = MSFlexGrid1.Font.Bold
Me.Font.Italic = MSFlexGrid1.Font.Italic
Me.Font.Strikethrough = MSFlexGrid1.Font.Strikethrough
Me.Font.Underline = MSFlexGrid1.Font.Underline 'Put the text from the selected cell into the textbox
Text1.Text = MSFlexGrid1.Text 'Get the height of the text in the textbox
HeightOfLine = Me.TextHeight(Text1.Text) 'Call API to determine how many lines of text are in text box
LinesOfText = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0&, 0&) 'Check to see if row is not tall enough
If MSFlexGrid1.RowHeight(MyRow) < (LinesOfText*HeightOfLine) Then
'Adjust the RowHeight based on the number of lines in textbox
MSFlexGrid1.RowHeight(MyRow) = LinesOfText * HeightOfLine
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货