powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подстройка высоты в MSFlexGrid под содержимое
10 сообщений из 10, страница 1 из 1
Подстройка высоты в MSFlexGrid под содержимое
    #32379669
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто подскажет, как можно подстроить высоту строки в MSFlexGrid под ее содержимое. Пробовал вычислять по длине строки, но с WordWrap=TRUE все мои вычисления идут "насмарку", к тому же я использую слияние строк: вот и получается, то много установил, то мало. Есть лучше алгоритм (и быстрый)?
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32382452
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве никто не знает?
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32383659
MikeTech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытался ширину измянять от кол-ва текста, не получилось.... учитывал и размер шрифта и т.д.
Возми другой грид.
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32392991
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то совсем все затихли, а ведь мне надо очень.
Мне удалось найти процедуру, которая в зависимости от параметра "max длина строки" разбивает оригинальную строку на строку с несколькими vbCrLf. НО! MSFlexGrid не переносим строки если не указать WordWrap (не наше ничего, что было бы похоже на MultiLine в TextBox), а с установленным WordWrap она опять переносит не по vbCrLf в строке, а по своему. Причем не так, как я разбиваю с помощью своей функции. А значит, у меня другое число строк. Как так?!
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32392992
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для MikeTech: Какой другой грид?
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32393645
MikeTech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vsflexgrid pro 7....
Ширину ячейки точно изменяет по кол-ву текста.... есть свойство.
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32394793
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vsflexgrid pro 7....
Ширину ячейки точно изменяет по кол-ву текста.... есть свойство.
Интересно, но меня интересует высота. Впрочем, возможно это опечатка, дома посмотрю vsflexgrid.
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32737316
VBaser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На одном немецком сайте нашел такой трюк: создаём Label и устанавливаем шрифт в полном соответствии со шрифтом в нужной ячейке MSFlexGrid. Дальше даём AutoSize и WordWrap у лейбела = TRUE и пихаем текст ячейки в лейбел.

Размеры ячейки изменяем теперь в соответствии с новыми размерами Label...
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32739248
VBaser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VBaserНа одном немецком сайте нашел такой трюк ...
А вот и сам код. Я поигрался у себя немного, наилучшие результаты получил вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
MSFlexGrid1.Col =  1  : MSFlexGrid1.Row =  1    ' устанавливаем желаемую ячейку 

 ' выставляем наш шрифт 
lblJustifier.FontName = MSFlexGrid1.FontName
lblJustifier.FontSize = MSFlexGrid1.FontSize
lblJustifier.FontBold = MSFlexGrid1.FontBold
lblJustifier.FontItalic = MSFlexGrid1.FontItalic

lblJustifier.AutoSize = True   ' меняй размер сам! 
lblJustifier.WordWrap = True   ' не забудь про перенос строк 
lblJustifier.Caption = MSFlexGrid1.Text      ' копируем текст ячейки 
lblJustifier.Width = MSFlexGrid1.CellWidth   ' важно: ширина контрола равна ширине ячейки 
                                             ' т.к. нас интересует только высота! 

MSFlexGrid1.RowHeight(MSFlexGrid1.Row) = lblJustifier.Height +  45 
 ' 45 твипов = 3 пиксела у меня; это пробел под последней строкой  
 ' который есть в обычных ячейках FlexGrid, но в Label его нет ... 

конечно, lblJustifier.Visible желательно установить в False .
...
Рейтинг: 0 / 0
Подстройка высоты в MSFlexGrid под содержимое
    #32739995
ostap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ostap
можно TextBox-ом...

Это в модуль.

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Это в форму


Option Explicit
Const EM_GETLINECOUNT = &HBA
Private Sub Form_Load()
Dim i As Long, j As Long
With flx
.WordWrap = True
.Rows = 10
.Cols = 3
For i = 0 To 9
For j = 0 To 2
.TextMatrix(i, j) = "dfhjgkljhfg" & vbCrLf & "dfhefgjghjfgjk"
Next
AdjustRowHeight flx, i
Next
End With
End Sub
Private Sub AdjustRowHeight(flx As MSHFlexGrid, ByVal i As Long)
Dim j As Long
Dim lngHeight As Long, lngLinesOfText As Long
If flx.RowHeightMin Then flx.RowHeight(i) = flx.RowHeightMin
For j = 1 To flx.Cols - 1
flx.Col = j
Text1.Width = Abs(flx.CellWidth)
Text1.Text = flx.Text
' высота строки
lngHeight = Me.TextHeight(Text1.Text)
lngLinesOfText = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
If flx.RowHeight(i) < lngLinesOfText * lngHeight Then
flx.RowHeight(i) = lngLinesOfText * lngHeight + 50
End If
Next j
End Sub
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подстройка высоты в MSFlexGrid под содержимое
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]