» Button: кнопка

K.A.V.
www.oszone.net
22.02.2010
Автор: K.A.V.
Последнее обновление: 17.05.2014

Данный элемент не нуждается в представлении, поэтому я начну сразу с параметров, которые мы можем прописать кнопке в нашем INI файле настроек элемента.

Для создания взаимодействующего элемента:
NOTIFY=ONCLICK

Назначаем кнопке функцию выбора/сохранения файла или выбора папки

Для того, чтобы при нажатии пользователя на кнопку показывался диалог выбора файла/папки или сохранения файла, нам необходимо присвоить параметру Flags одно из значений:
Примечание. Для использования данных флагов вы должны сделать элемент взаимодействующим.

OPEN_FILEREQUEST
Для показа диалога открытия файла

SAVE_FILEREQUEST
Для показа диалога сохранения файла

DIRREQUEST
Для показа диалога выбора папки

Если пользователь нажмёт на кнопку и выберет файл/папку, то выбор пользователя вы сможете узнать, прочитав значение параметра State у элемента кнопки:
ReadINIStr $0 "$PLUGINSDIR\Project.ini" "Field 1" "State"
Соответственно, если пользователь не сделает выбора - значение параметра будет пустым.

Пример секции элемента кнопки с выбором каталога:
[Field 1]
Type=Button
Text=Текст кнопки
Left=10
Right=100
Top=9
Bottom=21
NOTIFY=ONCLICK
Flags=DIRREQUEST

Фильтр по типу файлов

При использовании возможности открытия/сохранения файла, вы можете использовать список фильтров по типам файлов.
Для этого следует указать в параметре Filter необходимый фильтр, например:
Filter=Текстовый документ|*.txt|Программы|*.exe;*.com|Все файлы|*.*


Назначаем кнопке функцию показа диалога выбора цвета

Для того, чтобы при нажатии пользователя на кнопку показывался диалог выбора цвета, нам необходимо присвоить параметру Flags значение COLORREQUEST
Примечание. Для использования флага вы должны сделать элемент взаимодействующим.
После выбора цвета результат будет помещен в параметр State в шестнадцатеричном формате: 0xBBRRGG


Назначаем кнопке функцию показа диалога выбора шрифта

Для того, чтобы при нажатии пользователя на кнопку показывался диалог выбора шрифта, нам необходимо присвоить параметру Flags значение FONTREQUEST
Примечание. Для использования флага вы должны сделать элемент взаимодействующим.
После выбора шрифта результат будет помещен в параметр State в следующем формате: "Имя шрифта|Размер шрифта|Флаг жирного шрифта|Флаг курсивного шрифта|Флаг шрифта с подчеркиванием|Флаг зачеркнутого шрифта|Цвет текста".
Пример моего выбора в диалоге:


Результат в параметре State после нажатия OK в диалоге: Verdana|12|1|1|1|1|0x0000ff
Примечание. Чтобы разбить значения в такой строке, можете воспользоваться этим примером кода.


Назначаем кнопке изображение/иконку за место текста

Мы можем за место текста отобразить на нашей кнопке BMP-изображение или файл иконки (ico), для этого нам сначала необходимо добавить к параметру Flags соответствующее значение:

BITMAP
Если хотим назначить кнопке BMP-изображение

ICON
Если хотим назначить кнопке ico-значек

Затем, нам необходимо прописать полный путь к файлу, который будет показан на кнопке, для этого мы должны присвоить параметру Text полный путь к файлу изображения/иконки Перед инициализацией(перед вызовом функции initDialog)

Пример секции элемента кнопки с иконкой:
[Field 1]
Type=Button
Text=D:\TEST\myicon.ico
Left=10
Right=100
Top=9
Bottom=21
NOTIFY=ONCLICK
Flags=ICON
Примечание. Если вы хотите одновременно использовать 2 значения в параметре Flags (назначить, например, функцию выбора папки и отобразить иконку), то разделите значения символом вертикальной черты, вот так:
Flags=ICON|DIRREQUEST

Пример кода функции инициализации с присвоением кнопке значка

Function MyDialog

  InitPluginsDir
  File /oname=$PLUGINSDIR\Project.ini "Project.ini"
 
  WriteINIStr "$PLUGINSDIR\Project.ini" "Field 1" "Text" "D:\TEST\myicon.ico"

        InstallOptionsEx::initDialog /NOUNLOAD "$PLUGINSDIR\Project.ini"
        InstallOptionsEx::show
FunctionEnd


Сообщения Windows

Вы можете искусственно нажать кнопку командой:
SendMessage $HWND ${BM_CLICK} "" ""
где $HWND - HWND элемента