Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 11

MSFlexGrid свойство автоматически изменяющее размеры ячейки в зависимости от длины текста в ней

01.02.2010, 23:40. Показов 6417. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Неподскажите, есть ли у MSFlexGrid свойство автоматически изменяющее размеры ячейки в зависимости от длины текста в ней? Что-то аналогичное AutoSize у Label...
Заранее благодарен...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2010, 23:40
Ответы с готовыми решениями:

DBGrid Автоматическое изменение ширины ячейки в зависимости от количества текста в ней
Здравствуйте! Пишу программу на Visual Basic 6.0. Интересует как в компоненте DBGrid сделать автоматическое изменение ширины ячейки в...

Как сделать так, что бы размер ячейки при переносе раздвигался в зависимости от обьема текста в ней?
Формирую из одной книги другую. Необходимо перенести в ячейки текст разной длины. Ориентироваться на первую книгу не могу, т.к. там...

MSFlexGrid: отображение текста по центру ячейки
Хочу, чтобы текст в ячейках флексгрида отображался по центру ячейки. пробую MSFlexGrid1.CellAlignment = 2, но не работает. подскажите как...

3
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 13
02.02.2010, 23:34
Попробуй эту функцию :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Function fColWidth(MyForm As Form, MyGrid As MSFlexGrid) As Boolean
 
Dim c As Integer
Dim r As Integer
 
fColWidth = False
 
On Error GoTo EH_Error
 
  For c = 0 To MyGrid.Cols - 1
    For r = 0 To MyGrid.Rows - 1
    MyGrid.Col = c
      MyGrid.Row = r
    
    If MyGrid.ColWidth(c) < MyForm.TextWidth(MyGrid.Text) Then
        MyGrid.ColWidth(c) = ' ' & MyForm.TextWidth(MyGrid.Text & '  ')
      Else
    End If
    Next r
   Next c
 
fColWidth = True
 
EH_Error:
 If Err.Number <> 0 Then
   IaSub.sMsgError ModuleName, 'fColWidth', Err.Number, Err.Description
   Exit Function
 End If
End Function
0
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 26
03.02.2010, 09:30
Форматировать текст в Flex-е можно текстовым полем ...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
' Процедура форматирования строчки грида заполненного данными 
 
Private Sub AdjustRowHeight(flx As MSHFlexGrid, ByVal i As Long)
  Dim j As Long
  Dim lngHeight As Long, lngLinesOfText As Long
  Dim nColSave As Long
  nColSave = flx.Col
  If flx.RowHeightMin Then flx.RowHeight(i) = flx.RowHeightMin
  For j = 1 To flx.Cols - 1
    If flx.ColWordWrapOption(j) <> flexSingleLine Then
      flx.Col = j
      Text1.Width = Abs(flx.CellWidth)
      Text1.Text = flx.Text
      '*************** высота строки
      'Если работаем  в UserControl то используем
      'lngHeight = UserControl.TextHeight(Text1.Text)
      ' если в форме
      lngHeight = Me.TextHeight(Text1.Text)
      '***************************************
      lngLinesOfText = GetLinesOfText(Text1.hwnd)
      ' это просто ограничение, чтобы текст был виден  не болие 5 строк
      If lngLinesOfText > 5 Then lngLinesOfText = 5
      
      If flx.RowHeight(i) < lngLinesOfText * lngHeight Then
        flx.RowHeight(i) = lngLinesOfText * lngHeight + 50
      End If
    End If
  Next j
  flx.Col = nColSave
End Sub
 
'  --   Это в модуль
 
Public Const EM_GETLINECOUNT = &HBA
 
Public Function GetLinesOfText(hwnd As Long) As Long
  GetLinesOfText = SendMessage(hwnd, EM_GETLINECOUNT, 0&, 0&)
End Function
 
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
при желании, код можно доработать, чтобы менялась не только высота строки но и ширина колонки.
0
0 / 0 / 0
Регистрация: 12.02.2010
Сообщений: 5
12.02.2010, 13:15
А я вот процедурку какую использую. Она как раз меняет и ширину и высоту ячейки. Если речь идет о MSFlexGrid. С другими эдементами не пробовал.
Работает это все в табличном редакторе, который я пишу в качестве курсовой работы, поэтому используются MDI-формы

lblTempForSizeOfCell. - временная надпись. Свойства visible=false (видеть ее на форме незачем), AutoSize=true (как раз это нам и пригодится для считывания размеров текста).
txtStrokaFormul - строка для ввода формул. Соответственно по ширине этого текста и должны меняться размеры ячейки
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'Процедура, которая меняет размер ячейки в зависимости
'от размеров содержимого
Sub ChangeSizeOfCell()
 
With frmTableEditMDI
 
' В надпись считываем содержимое ячейки, которое также содержится в строке формул
    lblTempForSizeOfCell.Caption = .txtStrokaFormul.Text
    lblTempForSizeOfCell.Font = .ActiveForm.fxgTable.CellFontName
    lblTempForSizeOfCell.FontSize = .ActiveForm.fxgTable.CellFontSize
 
' Сравниваем ширину столбца с шириной надписи. Если она меньше, то приравниваем ширину столбца к ширине надписи
    If .ActiveForm.fxgTable.ColWidth(.ActiveForm.fxgTable.Col) <= frmTableEditMDI.lblTempForSizeOfCell.Width + 100 Then
        .ActiveForm.fxgTable.ColWidth(.ActiveForm.fxgTable.Col) = frmTableEditMDI.lblTempForSizeOfCell.Width + 100
    End If
 
' ...Аналогично для высоты
    If .ActiveForm.fxgTable.RowHeight(.ActiveForm.fxgTable.Row) <= frmTableEditMDI.lblTempForSizeOfCell.Height Then
        .ActiveForm.fxgTable.RowHeight(.ActiveForm.fxgTable.Row) = frmTableEditMDI.lblTempForSizeOfCell.Height + 100
    End If
    
End With
 
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2010, 13:15
Помогаю со студенческими работами здесь

Поменять цвет ячейки в зависимости от текста ячейки
Всем привет! помогите с задачкой! как в VBA реализовать заливку ячеек по содержимому УСО №25 УСО№25, подучасток 2 УСО№25,...

Подогнать размеры картинки под размеры кнопки автоматически
Есть кнопка button1 и файл изображения trololo.bmp. Картинка прямоугольная и больше кнопки, кнопка круглая. Как сделать так, чтобы картинка...

При редактировании текста в таблице, цвет ячейки менялся автоматически
Здравствуйте, вопрос такой, есть таблица в ней есть значения по типу открыто фон ячейки зеленый, закрыто фон ячейки красный ожидание фон...

Как автоматически изменять размер текста в spinner в зависимости от размера экрана?
Здравствуйте. В программе использую две темы светлую и темную: &lt;style name=&quot;BlackTheme&quot; ...

Изменение размера шрифта в textBlock в зависимости от длины текста
день добрый! есть wpf приложение с такой разметкой: &lt;Grid&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru