Как добавить в диалог TOpenDialog свой CheckBoxDelphi , ОС и Железо , Диалоги и ФреймыВообще, винда предоставляет возможность расширения некоторых стандартных диалогов с помощью шаблонов и hook-процедуры. Например, для OpenFileDialog'а пишется к примеру, такой rc-скрипт с шаблоном
brcc32.exe myres.rc и получается myres.res, который линкуется к проекту директивой {$R} (удобнее, конечно создавать и компилить шаблон в каком-нить редакторе ресурсов, типа Resource Workshop'а). Ну а в проге заполняется структура TOpenFileName (надо в uses подключить commdlg), у которой в поле lpTemplateName задается имя шаблона, а в поле lpfnHook - hook-процедура. В этой hook-процедуре и обрабатывается реакция на дополнительные контролы (например чекбоксы). Там же можно обработать смену типа файла, директории, выбранного файла, нажатие на OK, etc. Ну а для показа самого диалога вызывается API'шная GetOpenFileName Короче, вот пример кода
Чтобы добавить чекбокс в TOpenDialog в Delphi, можно использовать подход, описанный выше, который заключается в созданииcustom ресурсного файла (.res) с шаблоном для вашего диалога и затем связать его с проектом. Вот пример, как можно модифицировать код для добавления чекбокса: Сначала создайте новый ресурсный файл (например, myres.res) с следующим содержимым:
Скомпилируйте ресурсный файл с помощью Brcc32.exe:
Это будет генерировать новый .res-файл (myres.res), который можно связать с проектом. В вашем коде Delphi включите следующие строки:
В процедуре Button1Click установите структуру TOpenFileName как обычно, а затем добавьте следующие строки для указания имени шаблона и функции hook:
Остальная часть кода остается прежней. Когда вы запустите ваше приложение, будет отображаться диалог с чекбоксом. Обратите внимание, что вам нужно создать функцию hook (Fh в этом примере) для обработки событий, генерируемых custom контролом. В этом случае мы используем сообщения WM_COMMAND и WM_NOTIFY для ответа на изменения состояния чекбокса. Добавить в диалог TOpenDialog свой CheckBox можно с помощью шаблона и hook-процедуры, создавая rc-скрипт с контролами, компилируя его в файл ресурсов, а затем используя структуру TOpenFileName и вызывая API-функцию GetOpenFileName. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Диалоги и Фреймы ::
|
||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |