Как выровнять контрол грида MSHFlexGrid по высоте равным высоте всех его строк - VB

Узнай цену своей работы

Формулировка задачи:

Т.е. нужно чтобы визуально грид вмещал ВСЕ строки источника. Проблема в том , что высота строки грнда .MSHFlexGrid1.RowHeight(1) равна 345, а высота контрола в которорм находится MSHFlexGrid1 равна 58,5 Т.е. налицо разные единицы измерения - КАК их преобразовать друг в друга ?? Я знаю , что для ActivX контрола имеется свойство object.ScaleX (width, fromscale, toscale) но как им воспользоваться - не знаю. Сам MSHFlexGrid1 сидит у меня MsWord (но все-равно где он сидит ), и я не знаю , как получить доступ к ScaleX Попытки ActiveDocument.Shapes(4).ScaleY(345,1,1) ActiveDocument.MSHFlexGrid1.ScaleY(345,1,1) оказались неудачные.

Решение задачи: «Как выровнять контрол грида MSHFlexGrid по высоте равным высоте всех его строк»

textual
Листинг программы
  1. Private Declare Function GetDeviceCaps Lib 'gdi32' (ByVal hdc As Long, ByVal nIndex As Long) As Long
  2. Private Const LOGPIXELSX As Long = 88
  3. Private Const LOGPIXELSY As Long = 90
  4. '
  5. Private Declare Function GetDC Lib 'user32.dll' ( _
  6.      ByVal hwnd As Long) As Long
  7. Private Declare Function ReleaseDC Lib 'user32.dll' ( _
  8.      ByVal hwnd As Long, _
  9.      ByVal hdc As Long) As Long
  10. Private Declare Function GetDesktopWindow Lib 'user32.dll' () As Long
  11. '
  12. Private Sub Form_Load()
  13.     Dim twipsPerPixel_X As Long
  14.     Dim twipsPerPixel_Y As Long
  15.     Dim deskDC As Long
  16. '    
  17.    ' Пояснения:
  18.    ' 1). По определению 1 twip = 1/1440 логического дюйма, т.е. в 1 дюйме содержится 1440 твипов
  19.    ' 2). С другой стороны, GetDeviceCaps (вызванная с параметром LOGPIXELSX или LOGPIXELSY) вернёт
  20.    '     количество пикселей в том же логическом дюйме.
  21.    ' Поэтому получается простая пропорция, из которой можно узнать, сколько твипов в одном пикселе:
  22.    '
  23.    deskDC = GetDC(GetDesktopWindow)
  24.     twipsPerPixel_X = 1440 / GetDeviceCaps(deskDC, LOGPIXELSX)
  25.     twipsPerPixel_Y = 1440 / GetDeviceCaps(deskDC, LOGPIXELSY)
  26.     ReleaseDC GetDesktopWindow, deskDC
  27. '
  28.    Me.AutoRedraw = True
  29.     Me.Print 'twipsPerPixel_X = ' + Str$(twipsPerPixel_X)
  30.    Me.Print 'twipsPerPixel_Y = ' + Str$(twipsPerPixel_Y)
  31.    '
  32.    ' Т.к. твоя задача - разобраться с ВЫСОТОЙ контрола, то из этих двух величин тебе нужна вторая,
  33.    ' т.е. twipsPerPixel_Y.
  34. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы