| Вид, Название, Аргументы | Описание, Примеры, Комментарии |
|---|---|
|
[Painter(v).GuiLib.SimpleButton] Аргументы:glButtonBit - номер бита состояния кнопки (0)glButtonBevel - толщина фаски кнопки (1) glButtonMoveX - горизонтальное смещение надписи при нажатии кнопки (1) glButtonMoveY - вертикальное смещение надписи при нажатии кнопки (1) |
SimpleButton - простая кнопка. Состояние кнопки берется из указанного бита glButtonBit данных v. Толщина рамки кнопки определяется параметром glButtonBevel. При нажатии кнопки текст надписи смещается на glButtonMoveX, glButtonMoveY для имитации вдавливания кнопки. Пример: [SensorList] Sensor = Button [Button] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:14 Painter(v) = (glButtonBit=0)+(glButtonBevel=2) Painter(v) = [Painter(v).GuiLib.SimpleButton] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_100_40_24_silver.bmp Button Hint = Demo Button [] |
|
[Painter(v).GuiLib.RadioButton] Аргументы:glRadioValue - значение радиокнопки, при котором она будет выбранной (0)glRadioColor - цвет фона радиокнопки (clWhite) |
RadioButton - радиокнопка (зависимая кнопка в виде кружочка). Состояние радиокнопки берется с помощью указанного значения glRadioValue и данных v. Кнопка будет выбранной, когда glRadioValue=v. Предполагается, что с тегом данных связывается группа из нескольких радиокнопок, каждая из которых имеет свое значение glRadioValue. При анализе нажатий необходимо учитывать не только тег данных, но и то, какая именно из радиокнопок в группе была нажата. Цвет фона радиокнопки указывается в переменной glRadioColor. Пример: [SensorList] Sensor = RadioButton [RadioButton] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:13 Painter(v) = (glRadioValue=0) Painter(v) = [Painter(v).GuiLib.RadioButton] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_14_13_24_silver_ptmono.bmp %A0+RadioButton Hint = Demo RadioButton [] |
|
[Painter(v).GuiLib.CheckBox] Аргументы:glCheckBoxBit - бит тега данных, из которого берется состояние CheckBox (0)glCheckBoxColor - цвет фона кнопки (clWhite) |
CheckBox - чекбокс (кнопка с отметкой в виде квадратика с галочкой). Состояние кнопки берется с помощью указанного значения glCheckBoxBit и данных v. Кнопка рисует галочку, когда в v будет бит, заданный параметром glCheckBoxBit. Предполагается, что с тегом данных связывается группа из нескольких кнопок, каждая из которых имеет свое значение glCheckBoxBit. При анализе нажатий необходимо учитывать не только тег данных, но и то, какая именно из кнопок в группе была нажата. Цвет фона чекбокса указывается в переменной glCheckBoxColor. Пример: [SensorList] Sensor = CheckBox [CheckBox] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:12 Painter(v) = (glCheckBoxBit=0) Painter(v) = [Painter(v).GuiLib.CheckBox] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_11_12_24_silver_ptmono.bmp %A0+CheckBox Hint = Demo CheckBox [] |
|
[Painter(v).GuiLib.ProgressBar] Аргументы:glProgBarMin - минимальное значение индикатора выполнения (0)glProgBarMax - максимальное значение индикатора выполнения (100) glProgBarHor - ориентация индикатора выполнения: 1/0 = горизонтальный/вертикальный (1) glProgBarColor - цвет индикатора выполнения (clLime) glProgBarBevel - отступ индикатора от края сенсора (0) |
ProgressBar - индикатор выполнения. Индикатор выполнения используется для отображения состояния выполнения операции или процесса. Состояние может зависеть от времени, объема данных или выполнения операции (процесса). Состояние индикатора берется из данных v, подключенной кривой или тега и укладывается в диапазон значений, указанных в glProgBarMin, glProgBarMax. В зависимости от значения glProgBarHor, индикатор заполняется горизонтально или вертикально. Цвет указывается в переменной glProgBarColor. Переменная glProgBarBevel задает отступ индикатора от края сенсора. Ненулевое значение glProgBarBevel следует задавать при совместном использовании с элементом simpleBorder. Для того, чтобы рамка simpleBorder не перекрывала полоску индикатора следует принимать glProgBarBevel=glBorderBevel. Пример: [SensorList] Sensor = ProgressBar [ProgressBar] Pos = 10, 10 LED = 20, 3, 0, %20.3f, Name:PT_Mono\Style:[Bold]\Size:10 Painter(v) = (glProgBarMin=0)+(glProgBarMax=100) Painter(v) = [Painter(v).GuiLib.ProgressBar] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_21_10_24_silver_ptmono.bmp Hint = Demo ProgressBar [] |
|
[Painter(v).GuiLib.SimpleBorder] Аргументы:glBorderBevel - толщина рамки (1)glBorderColor - цвет рамки (clGray) |
SimpleBorder - простая рамка. Толщина рамки определяется параметром glBorderBevel. Цвет рамки определяется параметром glBorderColor. Пример: [SensorList] Sensor = Border [Border] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:10 Painter(v) = (glBorderBevel=2) Painter(v) = [Painter(v).GuiLib.SimpleBorder] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_90_30_24_silver.bmp Hint = Demo Border []SimpleBorder удобно использовать как альтернативу SimpleButton для отображения состояния какого-либо (не управляемого программно) элемента, например вентиля с ручным приводом с концевиками. Кроме того, SimpleBorder активно используется для полей ввода/вывода. |
|
[Painter(v).GuiLib.SimpleBar] Аргументы:glBarColor - цвет фона (clSilver) |
SimpleBar - простой заполненный прямоугольник (цветной фон для текста или других изображений). Цвет фона прямоугольника определяется параметром glBarColor. Пример: [SensorList] Sensor = SimpleBar [SimpleBar] Pos = 110, 180 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:10 Painter(v) = (glBarColor=clAqua) Painter(v) = [Painter(v).GuiLib.SimpleBar] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_90_30_24_silver.bmp Bar Hint = Demo SimpleBar []SimpleBar удобно использовать как начальный холст для заливки фона, для последующего отображения текста или другого элемента на этом цветном фоне. Для рисования на холсте вызов [Painter(v).GuiLib.SimpleBar] должен идти первым, иначе прямоугольник сотрет все ранее нарисованные элементы. |
|
[Painter(v).GuiLib.Cmd.ToolBar] Аргументы:glCmdToolBarColor0 - цвет по умолчаниюglCmdToolBarColor1 - цвет при нажатии |
ToolBar - иконки панели инструментов. В секции [Painter(v).GuiLib.Cmd.ToolBar], ToolBar заменяется на: Calculator - Калькулятор Close - Закрыть программу Console - Открыть консоль Erase - Ластик (очистить) Favorite - Избранное Flash - Вспышка (выполнение какого-либо действия) FlashAlt - Вспышка (альтернативный вид) Help - Вызов справки Home - Переместить все окна домой Key - Ключ Lightning - Молния (выполнение какого-либо действия) LightningAlt - Молния (альтернативный вид) Loadini - Загрузить параметры из ini файла Lock - Замок (блокировка) Loupe - Лупа Navigator - Вызвать главное окно Daq-системы Open - Открыть файл данных *.dat Save - Сохранять данные в dat файл Saveini - Сохранить параметры в ini файле Setting - Настройка Smile - Индикатор состояния ошибки Snowflake - Снежинка Sound - Включение и отключение звуковых эффектов Tools - Вызвать меню инструментов Цвета заливки иконок задаются параметрами glCmdToolBarColor0, glCmdToolBarColor1. Иконка Smile (индикатор состояния ошибки) имеет три параметра: glCmdSmileColor0, glCmdSmileColor1, glCmdSmileColor2, которые по умолчанию равны clLime, clRed, clYellow соответственно. Элементы панели управления хорошо сочетаются с другими элементами библиотеки GuiLib, например с SimpleButton или SimpleBorder. Пример: [SensorList] Sensor = Home [Home] Pos = 10, 10 Painter(v) = (glCmdHomeColor0=clYellow)+(glCmdHomeColor1=clOlive) Painter(v) = [Painter(v).GuiLib.Cmd.Home] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_32_32_24_silver.bmp Hint = Demo Home Toolbar Icon []При отсутствии явного указания параметров принимаются значения по умолчанию (для каждой иконки они индивидуальны). |
|
[Painter(v).GuiLib.Cmd.Action] Аргументы:glCmdActionColor0 - цвет по умолчанию (clBlack)glCmdActionColor1 - цвет при нажатии (clBlack) glCmdActionAlignment - выравнивание иконки (1) glCmdArrowXLineWidth - толщина линии (2) |
Action: Menu - меню, набор параметров Options - опции, дополнительные параметры ArrowCircCW (Clockwise circle arrow) - вращение по часовой стрелке (окружность 3/4) ArrowCircCCW (Counterclockwise circle arrow) - вращение против часовой стрелки (окружность 3/4) ArrowCW - вращение (поворот) по часовой стрелке (полукруг) ArrowCCW - вращение (поворот) против часовой стрелки (полукруг) ArrowUp - стрелка вверх ArrowDown - стрелка вниз ArrowLeft - стрелка влево ArrowRight - стрелка вправо PowerOn - включение, подача питания Иконку Menu удобно использовать для подписей (заголовков, подзаголовков) на мнемосхеме, при нажатии на которых выполняется вызов диалога (меню) с выбором параметров. Добавление иконки к такому сенсору сделает вызов меню более очевидным. Иконку Options можно использовать также, как и Menu, но для просмотра или редактирования каких-либо дополнительных опций (параметров). Иконки можно применять как для квадратных кнопок, так и для прямоугольных, сочетая с другими элементами библиотеки GuiLib, например SimpleButton или SimpleBorder. Параметр glCmdActionAlignment задает выравнивание иконки внутри горизонтального или вертикального сенсора. Выравнивание задается битовой маской: 1 - выравнивание слева или сверху 2 - выравнивание по центру (по горизонтали) 4 - выравнивание по правому краю 8 - выравнивание по середине (по вертикали) 16 - выравнивание по нижнему краю Примеры: Кнопка "Меню" с выравниванием иконки по правому краю: [SensorList] Sensor = Menu [Menu] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:12 Painter(v) = (glButtonBevel=2)+(glCmdMenuAlignment=4) Painter(v) = [Painter(v).GuiLib.SimpleButton] Painter(v) = [Painter(v).GuiLib.Cmd.Menu] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_6_20_24_silver_ptmono.bmp Menu+%A0 Hint = Menu button []Кнопка "Вращение по часовой стрелке" с выравниванием иконки по центру: [SensorList] Sensor = ArrowCircCW [ArrowCircCW] Pos = 10, 50 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:14 Painter(v) = (glButtonBevel=2)+(glCmdArrowCircCWAlignment=2) Painter(v) = [Painter(v).GuiLib.SimpleButton] Painter(v) = [Painter(v).GuiLib.Cmd.ArrowCircCW] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_6_20_24_silver_ptmono.bmp Hint = Clockwise rotate button [] |
|
[Painter(v).GuiLib.Cmd.Ok] [Painter(v).GuiLib.Cmd.Cancel] Аргументы:Cmd.Ok:glCmdOkLineWidth - толщина контура галочки (1) glCmdOkLineColor - цвет контура галочки (clGreen) glCmdOkFillColor - цвет заливки галочки (clLime) glCmdOkAlignment - выравнивание галочки (1) Cmd.Cancel: glCmdCancelLineWidth - толщина контура крестика (1) glCmdCancelLineColor - цвет контура крестика (clMaroon) glCmdCancelFillColor - цвет заливки крестика (clRed) glCmdCancelAlignment - выравнивание крестика (1) |
Cmd.Ok - иконка подтверждения (Применить, Ладно, Ok). Cmd.Cancel - иконка отмены (Закрыть, Отмена). Иконки удобно применять для кнопок подтверждения/отмены, сочетая с другими элементами библиотеки GuiLib, например SimpleButton или SimpleBorder. Параметр glCmdAlignment задает выравнивание иконки внутри горизонтального или вертикального сенсора. Выравнивание задается битовой маской: 1 - выравнивание слева или сверху 2 - выравнивание по центру (по горизонтали) 4 - выравнивание по правому краю 8 - выравнивание по середине (по вертикали) 16 - выравнивание по нижнему краю Примеры: Кнопка "Применить": [SensorList] Sensor = Apply [Apply] Pos = 50, 50 LED = 0, 0, 0, *, Name:PT_Sans\Style:[Bold]\Size:12 Painter(v) = (glButtonBevel=2)+(glCmdOkLineColor=clBlack)+(glCmdOkLineWidth=1) Painter(v) = [Painter(v).GuiLib.Cmd.Ok] Painter(v) = [Painter(v).GuiLib.SimpleButton] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_8_20_24_silver_ptmono.bmp %A0+++Применить Hint = Apply button []Кнопка "Отмена": [SensorList] Sensor = Cancel [Cancel] Pos = 185, 50 LED = 0, 0, 0, *, Name:PT_Sans\Style:[Bold]\Size:12 Painter(v) = (glButtonBevel=2)+(glCmdCancelLineColor=clBlack)+(glCmdCancelLineWidth=1) Painter(v) = [Painter(v).GuiLib.Cmd.Cancel] Painter(v) = [Painter(v).GuiLib.SimpleButton] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_8_20_24_silver_ptmono.bmp %A0+++Отмена Hint = Cancel button [] |
|
[Painter(v).GuiLib.Indicator.Circle] Аргументы:glCircleBevel - отступ окружности от края изображения (0)glCircleWidth - толщина контура окружности (1) glCircleFaceColor - цвет контура окружности (clBlack) glCircleBackColor - цвет заливки окружности (clSilver) glCircleAlignment - выравнивание индикатора (1) |
Indicator.Circle - цветной круглый индикатор. Индикатор хорошо сочетаются с другими элементами библиотеки GuiLib, например с SimpleButton или SimpleBorder. Параметр glCircleAlignment задает выравнивание индикатора внутри горизонтального или вертикального сенсора. Выравнивание задается битовой маской: 1 - выравнивание слева или сверху 2 - выравнивание по центру (по горизонтали) 4 - выравнивание по правому краю 8 - выравнивание по середине (по вертикали) 16 - выравнивание по нижнему краю Пример: [SensorList] Sensor = Indicator [Indicator] Pos = 10, 10 Painter(v) = (glCircleBevel=2)+(glCircleWidth=2) Painter(v) = (glCircleBackColor=eq(v,0)*clLime+eq(v,1)*clRed) Painter(v) = (glCircleBackColor=glCircleBackColor+eq(glCircleBackColor,0)*clSilver) Painter(v) = [Painter(v).GuiLib.Indicator.Circle] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_32_32_24_silver.bmp Hint = Demo Indicator []Цвет индикатора можно вычислять по формуле. Для вычисления цвета индикатора могут использоваться выражения DaqScript. Например, в приведенном примере индикатор отображается зеленым или красным, если значение (v) равно 0 или 1 и серым в остальных случаях: Painter(v) = (glCircleBackColor=eq(v,0)*clLime+eq(v,1)*clRed) Painter(v) = (glCircleBackColor=glCircleBackColor+eq(glCircleBackColor,0)*clSilver) |
|
[Painter(v).GuiLib.SimpleCross] Аргументы:glCrossBevel - отступ крестика от края изображения (2)glCrossWidth - толщина крестика (1) glCrossColor - цвет крестика (clBlack) |
SimpleCross - простой крестик. Крестик хорошо сочетается с другими элементами библиотеки GuiLib, например с SimpleBorder. Пример: [SensorList] Sensor = Cross [Cross] Pos = 10, 10 Painter(v) = (glCrossBevel=2)+(glCrossWidth=2)+(glCrossColor=clBlack) Painter(v) = [Painter(v).GuiLib.SimpleCross] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\barbmp_18_18_24_white.bmp Hint = Demo Cross [] |
|
[Painter(v).GuiLib.ListButton.Arrow] [Painter(v).GuiLib.ListButton.Triangle] Аргументы:Для стрелки (Arrow):glListBtnArrowLeft - кнопка выпадающего списка слева (0) glListBtnArrowLineColor - цвет линии стрелки (clBlack) glListBtnArrowLineWidth - толщина линии стрелки (1) glListBtnArrowBorderWidth - толщина границы кнопки (1) glListBtnArrowBorderColor - цвет границы кнопки (clGray) Для треугольника (Triangle): glListBtnTriangleLeft - кнопка выпадающего списка слева (0) glListBtnTriangleLineColor - цвет линии треугольника (clBlack) glListBtnTriangleFillColor - цвет заливки треугольника (clGray) glListBtnTriangleBorderWidth - толщина границы кнопки (1) glListBtnTriangleBorderColor - цвет границы кнопки (clGray) |
ListButton - кнопка выпадающего списка. Кнопка выпадающего списка используется для реализации аналога выпадающего списка с использованием диалога MenuList. Она может иметь вид стрелки Arrow или треугольника Triangle и располагаться слева или справа в сенсоре. Кнопка выпадающего списка хорошо сочетается с другими элементами библиотеки GuiLib, например с SimpleBorder. Пример сенсора с кнопкой выпадающего списка в виде стрелки, расположенного справа, с рамкой кнопки: [SensorList] Sensor = ListButton.Arrow [ListButton.Arrow] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:12 Painter(v) = (glListBtnArrowLeft=0)+(glListBtnArrowLineWidth=2) Painter(v) = [Painter(v).GuiLib.SimpleBorder] Painter(v) = [Painter(v).GuiLib.ListButton.Arrow] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_9_12_24_white_ptmono.bmp List+1+%A0 Hint = Demo ListButton.Arrow []Пример сенсора с кнопкой выпадающего списка в виде треугольника, расположенного слева, без рамки кнопки: [SensorList] Sensor = ListButton.Triangle [ListButton.Triangle] Pos = 10, 10 LED = 0, 0, 0, *, Name:PT_Mono\Style:[Bold]\Size:12 Painter(v) = (glListBtnTriangleLeft=1)+(glListBtnTriangleBorderWidth=0) Painter(v) = [Painter(v).GuiLib.SimpleBorder] Painter(v) = [Painter(v).GuiLib.ListButton.Triangle] Tag#1 = 0, ~~\Resource\DaqSite\StdLib\Bitmaps\ledbmp_9_12_24_white_ptmono.bmp %A0+List+1 Hint = Demo ListButton.Triangle [] |
[ConfigFileList] ; Include the Painter GUI Library ; Для доступа к библиотеке ConfigFile = ~~\Resource\DaqSite\Default\Painter.crc ; Не забываем включить Painter.crc [] ... ... [SensorList] Sensor = Button1 ; Создаем сенсор Button1 [Button1] ; Это будет простая кнопка - SimpleButton Pos = 10, 150 ; Задаем координаты LED = 0, 0, 0, *, Name:PT_Mono\Size:10\Style:[Bold] ; Задаем фонт надписи Painter(v) = (glButtonBit=0)+(glButtonBevel=3) ; Задаем параметры кнопки glButtonBit, glButtonBevel Painter(v) = (glButtonMoveX=2)+(glButtonMoveY=2) ; Задаем смещение надписи при нажатии кнопки Painter(v) = [Painter(v).GuiLib.SimpleButton] ; Включаем библиотечный сценарий Tag#1 = 0, barbmp_100_20_24_silver.bmp Кнопка1 ; Задаем фоновое изображение и надпись Hint = Это пример использования графической библиотеки ; Комментируем происходящее []
При разработке и использовании библиотеки GuiLib и других графических библиотек следует соблюдать такие договоренности:
Пользователь (прикладной программист) включает библиотеку в свою мнемосхему путем подключения
файла ~~\Resource\DaqSite\Default\Painter.crc.
При этом помимо графических элементов в проект автоматически включается также набор цветовых констант, стилей и т.д.
Разработчик (системный программист) размещает библиотечные сценарии (прямо или путем включения)
в файле ~~\Resource\DaqSite\Painter\GuiLib.crc.
Сценарии рисования графических элементов размещаются в секциях [Painter(v).GuiLib.Name], где Name - имя графичекого элемента, например для простой кнопки SimpleButton секция будет [Painter(v).GuiLib.SimpleButton].
Параметры, используемые в сценарии, должны начинаться с префикса gl (gui library) и отражать в имени свое назначение. Например, glButtonBit - номер бита состояния кнопки, glButtonBevel - толщина фаски для кнопки, glButtonMoveX - горизонтальное смещение надписи при нажатии кнопки, glButtonMoveY - вертикальное смещение надписи при нажатии кнопки.
Библиотечные сценарии должны быть отказоустойчивыми и допускать упрощенный вызов без указания параметров. То есть сценарии должны создаваться так, чтобы была возможность вообще не задавать параметры при вызове - в этом случае должны работать значения по умолчанию. Значения по умолчанию должны задаваться в секции [Circuit.StartupScript] и устанавливаться при загрузке окна. Правильно написанные библиотечные сценарии должны также восстанавливать значения по умолчанию в конце сценария, чтобы другие сенсоры также могли воспользоваться значением по умолчанию при вызове без параметров. Кроме того, чтобы избежать сбоев при случайном удалении параметров, их следует декларировать (через var), чтобы даже при удалении они создавались заново. Это позволит повысить отказоустойчивость сценариев. Примером служат имеющиеся сценарии GuiLib.crc.
При конфигурировании сенсора параметрам присваивается значение, а затем вставляется ссылка на секцию. Например:
Painter(v) = (glButtonBit=0)+(glButtonBevel=3) ; Задаем параметры кнопки glButtonBit, glButtonBevel Painter(v) = (glButtonMoveX=2)+(glButtonMoveY=2) ; Задаем параметры кнопки glButtonMoveX, glButtonMoveY Painter(v) = [Painter(v).GuiLib.SimpleButton] ; Включаем библиотечный сценарий
При написании сценария следует избегать зависимостей от каких-либо параметров, кроме явно описанных. Не следует полагаться на переменные, которым явно не присваивается значение. Используемые параметры могут быть не инициализированы, поэтому рекомендуется декларировать их с помощью var. В этом случае (при отсутствии инициализации) им присваивается значение по умолчанию (ноль). Сценарий должен учитывать эту возможность и проверять параметры перед использованием.
По возможности из соображений производительности следует избегать использования операторов if .. then, goto .. label:, gosub .. return, exit. Их следует заменять арифметическими выражениями. Если, например, линия при каких-то условиях не должна рисоваться, то избежать её рисования можно указанием режима Пера psClear при вызове drawLine. Это позволяет отказаться в скриптах от условных операторов и операторов перехода.
При написании нового сценария желательно давать элементам понятные имена и подробно документировать используемые параметры.