-
Notifications
You must be signed in to change notification settings - Fork 1
TFormAlign
Модуль для реализации "резинового макета" на формах ввода ИСУБД CronosPro. Обеспечивает изменение размеров и положения элементов формы в зависимости от размеров окна.
number MinWidth - минимально допустимая ширина формы
number MinHeight - минимально допустимая высота формы
number MaxWidth - максимально допустимая ширина формы
number MaxHeight - максимально допустимая высота формы
SetRules(Control ctrl, table rules) –
устанавливает правила изменения размеров элемента ctrl при изменении размеров родительского элемента. rules – таблица, содержащая 4 логических значения, каждое из которых определяет необходимость привязки элемента к соответствующему углу родительского контейнера: {left,top,right,bottom}. Может задаваться одной из констант.
RemoveRules(Control ctrl) –
удаляет правила изменения размеров для элемента.
Align2Parts(Control ctrl_1, Control ctrl_2, number K, string dir) -
статический метод. Применяется для того, чтобы обеспечить постоянное соотношение высоты (ширины) двух элементов (ctrl_1 и ctrl_2) при изменении размеров их родительского элемента. K – соотношение ширины (высоты) выравниваемых элементов; dir – направление выравнивания элементов, может принимать значения "H" или "V".
SetPosition(Control ctrl, table rules, number left, number top, number right, number bottom, number w, number h) ) -
статический метод. Задает начальное расположение элемента ctrl внутри родительского элемента. Rules - таблица, содержащая 4 логических значения, каждое из которых определяет необходимость привязки элемента к соответствующему углу родительского контейнера: {left,top,right,bottom}, может задаваться одной из констант. left, top, right, bottom – расстояния между краями элемента и соответствующими краями контейнера. w, h – высота и ширина элемента.
SetPosition(Me.listbox1, TFormAlign.alLeft, 5, 25, nil, 20, 200, nil) – задать для элемента listbox1 ширину 200 пикселей и разместить его вдоль левого края формы, обеспечив зазоры слева 5 пикселей, сверху и снизу – 25 и 20 пикселей соответственно. Параметры right и h не заданы, т.к. при данных правилах размещения (растягивание вдоль левого края) они не имеют значения.
Константы, управляющие размещением элементов формы. Используются в методе SetRules.
alLeft = { true, true, false, true } – элемент растягивается/сжимается по высоте
alTop = {true, true, true, false } – элемент растягивается/сжимается по ширине
alRight = {false, true, true, true } – элемент растягивается/сжимается по высоте и смещается по горизонтали
alBottom = {true, false, true, true } - элемент растягивается/сжимается по ширине и смещается по вертикали
alClient = {true, true, true, true } - элемент растягивается/сжимается по ширине и высоте
alLeftTop = {true, true, false, false } – элемент сохраняет положение относительно левого верхнего угла родительского элемента, размеры не меняются
alLeftBottom = {true, false, false, true } – элемент смещается по вертикали, сохраняя положение относительно левого нижнего угла родительского элемента, размеры не меняются
alRightTop = {false, true, true, false } - элемент смещается по горизонтали, сохраняя положение относительно правого верхнего угла родительского элемента, размеры не меняются
alRightBottom = {false, false, true, true } - элемент смещается по горизонтали и вертикали, сохраняя положение относительно правого нижнего угла родительского элемента, размеры не меняются
Конструктор должен вызываться из обработчика события Open формы.
local FormAlign = require(“TFormAlign”)
function Форма_Open( form )
FAlign = FormAlign(Me)
FAlign:SetRules(Me.надпись1,FAlign.alLeftTop)
FAlign:SetRules(Me.текст1,FAlign.alTop)
FAlign:SetRules(Me.кнопка1,FAlign.alRightTop)
FAlign:SetRules(Me.рамка1,FAlign.alLeft)
FAlign:SetRules(Me.рамка2,FAlign.alClient)
FAlign:SetRules(Me.рамка3,FAlign.alRight)
FAlign:SetRules(Me.кнопка2,FAlign.alLeftBottom)
FAlign:SetRules(Me.надпись2,FAlign.alBottom)
FAlign:SetRules(Me.кнопка3,FAlign.alRightBottom)
FAlign:SetRules(Me.текст2,FAlign.alTop)
FAlign:SetRules(Me.текст3,FAlign.alClient)
K = Me.текст2.Height / Me.текст3.Height
FAlign.OnResize = function(self)
-- хотим чтобы соотношение высоты элементов текст2 и текст3 оставалось постоянным
self:Align2Parts(Me.текст2, Me.текст3, K, "V")
end
return true;
end
(C) Sinilga, 2018-2021
Компоненты форм ввода