Как выровнять контрол грида 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
Листинг программы
- Private Declare Function GetDeviceCaps Lib 'gdi32' (ByVal hdc As Long, ByVal nIndex As Long) As Long
- Private Const LOGPIXELSX As Long = 88
- Private Const LOGPIXELSY As Long = 90
- '
- Private Declare Function GetDC Lib 'user32.dll' ( _
- ByVal hwnd As Long) As Long
- Private Declare Function ReleaseDC Lib 'user32.dll' ( _
- ByVal hwnd As Long, _
- ByVal hdc As Long) As Long
- Private Declare Function GetDesktopWindow Lib 'user32.dll' () As Long
- '
- Private Sub Form_Load()
- Dim twipsPerPixel_X As Long
- Dim twipsPerPixel_Y As Long
- Dim deskDC As Long
- '
- ' Пояснения:
- ' 1). По определению 1 twip = 1/1440 логического дюйма, т.е. в 1 дюйме содержится 1440 твипов
- ' 2). С другой стороны, GetDeviceCaps (вызванная с параметром LOGPIXELSX или LOGPIXELSY) вернёт
- ' количество пикселей в том же логическом дюйме.
- ' Поэтому получается простая пропорция, из которой можно узнать, сколько твипов в одном пикселе:
- '
- deskDC = GetDC(GetDesktopWindow)
- twipsPerPixel_X = 1440 / GetDeviceCaps(deskDC, LOGPIXELSX)
- twipsPerPixel_Y = 1440 / GetDeviceCaps(deskDC, LOGPIXELSY)
- ReleaseDC GetDesktopWindow, deskDC
- '
- Me.AutoRedraw = True
- Me.Print 'twipsPerPixel_X = ' + Str$(twipsPerPixel_X)
- Me.Print 'twipsPerPixel_Y = ' + Str$(twipsPerPixel_Y)
- '
- ' Т.к. твоя задача - разобраться с ВЫСОТОЙ контрола, то из этих двух величин тебе нужна вторая,
- ' т.е. twipsPerPixel_Y.
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д