В коде, во время выполнения, это то, что вы делаете:
Я! MyControl.Width = 1,5 *1440* 1003 *
1,5 - это 1,5 ", а 1440 - это нечто, называемое TWIP, которые представляют собой относительные единицы измерения, размер которых зависит от разрешения экрана и базового размера шрифта Windows.
Теперь, где ты это делаешь?
Если у вас есть разные записи в одной и той же таблице, для которых требуются разные макеты, вы сделаете это в событии OnCurrent. Таким образом, при переходе от одной записи к другой событие OnCurrent будет проверять любые элементы управления данными, какую ширину вы используете, и устанавливать ширину. Если есть только два макета, лучше использовать If / Then / Else. Если их больше двух, лучше выбрать SELECT CASE.
Кроме того, если вы измеряете и выравниваете столбцы, было бы полезно назначить константы уровня модуля, что-то вроде этого (это взято из приложения, которое я впервые создал в 1997 году, которое имеет 15 различных типов записей и 3 основных макета). с 8 или 9 незначительными вариациями):
Const Height = 0.1583 * 1440
Const row1Top = 1.0208 * 1440 ' top of first row
Const row2Top = row1Top + 0.2083 * 1440
Const row3Top = row2Top + 0.2083 * 1440
Const row4Top = row3Top + 0.2083 * 1440
Const row5Top = row4Top + 0.2083 * 1440
Const row6Top = row5Top + 0.2083 * 1440
Const row7Top = row6Top + 0.2083 * 1440
Const Logic0Top = 1.6833 * 1440
Const logic1Top = Logic0Top + 0.1667 * 1440
Const logic2Top = logic1Top + 0.1667 * 1440
Const logic3Top = logic2Top + 0.1667 * 1440
Const logic4Top = logic3Top + 0.1667 * 1440
Const lblLogic0Top = Logic0Top - 0.0208 * 1440
Const lblLogic1Top = lblLogic0Top + 0.1667 * 1440
Const lblLogic2Top = lblLogic1Top + 0.1667 * 1440
Const lblLogic3Top = lblLogic2Top + 0.1667 * 1440
Const lblLogic4Top = lblLogic3Top + 0.1667 * 1440
Const DateWidth = 0.7833 * 1440
Const lWidth = 2.0167 * 1440
Const rWidth = 2.7771 * 1440
Const lMemoWidth = 4.8771 * 1440
Const commtWidth = (2.745 * 1440)
Const lCommt = 3.775 * 1440
Const CommtHeight = 1.5 * 1440
Const memoHeightOffset = 0.94 '0.8354
Const bksCommtHeight = ((memoHeightOffset + 0.5) * 1440) + 250
Const ConditionWidth = 4.2417 * 1440 - 15
Const memo3Tall = ((memoHeightOffset + 1.4146) * 1440) + 160
Const memo4Tall = ((memoHeightOffset + 1.2063) * 1440) + 160
Const memo5Tall = ((memoHeightOffset + 0.9979) * 1440) + 160
Const memo6Tall = ((memoHeightOffset + 0.7896) * 1440) + 160
Const memoShort = (1.5208 * 1440) + 160 ' Height of memo
Const lblOffset = -0.3291 ' adjusts memo label top for new layout
Const lblMemoTop3 = ((lblOffset + 1.9167) * 1440) - 480 - 100
Const lblMemoTop4 = ((lblOffset + 2.125) * 1440) - 480 - 55
Const lblMemoTop5 = ((lblOffset + 2.3333) * 1440) - 480 - 100
Const lblMemoTop6 = ((lblOffset + 2.5417) * 1440) - 480 - 100
Const lblMemoTop7 = ((lblOffset + 2.75) * 1440) - 480 - 100
Const lblBib0 = (2.5833 * 1440) - 480
Const Bib1 = 2.4674 * 1440
Const Bib2 = 2.6257 * 1440
Const Bib3 = 2.784 * 1440
Const Bib4 = 2.9424 * 1440
Очень сложно, потому что форма очень сложна (событие OnCurrent стало настолько большим, что мне пришлось разделить его на две разные подпрограммы - я не могу вспомнить точный максимальный размер подпрограммы, но это может быть 64 КБ. Да Вот как это было плохо, и да, я сожалею о том, что реализовал что-то таким образом. Если бы мне пришлось это делать, я бы использовал элемент управления вкладками с невидимыми вкладками и выделил одну вкладку для каждого типа записи. Но я не думал этого пути тогда.
Если вам не нужно перемещать или изменять размер по вертикали, вы можете обойтись с горсткой констант:
Col1Left
Col2LeftA
Col2LeftB
Col1WidthA
Col1WidthB
Col2WidthA
Col2WidthB
Это позволит вам иметь два столбца элементов управления с двумя разными горизонтальными позициями для второго столбца и двумя разными ширинами для каждого столбца. Я бы порекомендовал очень прозрачные имена для этих констант, чтобы ваш код был более-менее понятен.