***เป็น โค๊ดในส่วนหนึ่งของโปรแกรม FindEndPromise
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
Public Sub AutoRowHeight()
Dim ColLoop As Long
Dim RowLoop As Long
'Turn off redrawing to avoid flickering
MSHFlexGrid1.Redraw = False
With Me.MSHFlexGrid1
.RowHeight(1) = Me.TextHeight("d") * 1
.RowHeight(2) = Me.TextHeight("d") * 1
.RowHeight(3) = Me.TextHeight("d") * 1
.RowHeight(4) = Me.TextHeight("d") * 1
.RowHeight(5) = Me.TextHeight("d") * 1
End With
'MSHFlexGrid1.ColWidth(ColLoop) = 2500
'ColLoop = 4
For RowLoop = 1 To MSHFlexGrid1.Rows - 1
For ColLoop = 2 To 5
ReSizeCellHeight RowLoop, ColLoop
Next ColLoop
Next RowLoop
'Turn redrawing back on
MSHFlexGrid1.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
MSHFlexGrid1.Row = MyRow
MSHFlexGrid1.Col = MyCol
'Set textbox width to match current width of selected cell
Text1.Width = MSHFlexGrid1.ColWidth(MyCol)
'Set font info of textbox to match FlexGrid control
Text1.Font.Name = MSHFlexGrid1.Font.Name
Text1.Font.Size = MSHFlexGrid1.Font.Size
Text1.Font.Bold = MSHFlexGrid1.Font.Bold
Text1.Font.Italic = MSHFlexGrid1.Font.Italic
Text1.Font.Strikethrough = MSHFlexGrid1.Font.Strikethrough
Text1.Font.Underline = MSHFlexGrid1.Font.Underline
'Set font info of form to match FlexGrid control
Me.Font.Name = MSHFlexGrid1.Font.Name
Me.Font.Size = MSHFlexGrid1.Font.Size
Me.Font.Bold = MSHFlexGrid1.Font.Bold
Me.Font.Italic = MSHFlexGrid1.Font.Italic
Me.Font.Strikethrough = MSHFlexGrid1.Font.Strikethrough
Me.Font.Underline = MSHFlexGrid1.Font.Underline
'Put the text from the selected cell into the textbox
Text1.Text = Trim(MSHFlexGrid1.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 MSHFlexGrid1.RowHeight(MyRow) < (LinesOfText * HeightOfLine) Then
'Adjust the RowHeight based on the number of lines in textbox
MSHFlexGrid1.RowHeight(MyRow) = LinesOfText * HeightOfLine
End If
End Sub
ไม่มีความคิดเห็น:
แสดงความคิดเห็น