RayShade писал(а):WordWrap будет работать только если слова разделены vbCrLf
Option Explicit
'=========================================================================
' API-функция SendMessage используется для определения
' количества строк в TextBox'е, связанном с редактируемой ячейкой
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
Private Const EM_GETLINECOUNT = &HBA
Private Sub AutoHeightCells()
' подгоняем высоту строк в MSFlexGrid под
' количество строк текста в его ячейках
Dim StringCount As Long ' количество строк
Dim NewHeight As Long ' высота
Dim MaxHeight As Long
Dim i As Integer, j As Ineger
With aFlexGrid
For j = 0 To .Rows -1 ' цикл по строкам грида
For i = 0 To .Cols - 1
aTmpTextBox.Width = .ColWidth(i)
aTmpTextBox.Text = .TextMatrix(.Row, i)
StringCount = SendMessage(aTmpTextBox.hwnd, EM_GETLINECOUNT, 0, 0)
If MaxHeight < StringCount Then MaxHeight = StringCount
Next i
StringCount = SendMessage(aTextBox.hwnd, EM_GETLINECOUNT, 0, 0)
' вычисляем высоту ячейки в зависимости от количества строк и
' высоты символа
If StringCount < MaxHeight Then StringCount = MaxHeight
StringCount = StringCount + 1
NewHeight = aTextBox.Parent.TextHeight("A") * StringCount
' изменяем высоту всей строки, если новое значение больше старого
.RowHeight(.Row) = NewHeight
Next j
End With
End Sub
Сейчас этот форум просматривают: PetalBot и гости: 13