Бесплатная библиотека компонентов JVCL содержит огромное количество как полезных вещей так и разного хлама. Некоторую часть этих компонентов я опишу у себя в блоге, чтобы дать представление о том, что можно там найти. Да в JVCL не всё гладко, не всё работает как хотелось бы, кое-что глючит, кое-что вообще не работает, но тем не менее, это библиотека с открытым кодом, и найденную ошибку всегда можно отследить в исходниках и исправить, либо просто взять нужный код и написать свой вариант. Чужие исходники это просто кладезь информации для программиста.
Системные диалоги Windows
- TJvAppletDialog – запускает любой applet из Control Panel. Если необходимо открыть из программы окошко Свойства дисплея, или Настройка Bluetooth, то это можно легко сделать с помощью этого компонента.
- TJvConnectNetwork и TJvDisconnectNetwork – диалоги для подключения и отключения сетевых дисков. Фактически, это просто компоненты-обёртки вокруг API функций WNetConnectionDialog и WNetDisconnectDialog.
- TJvAddPrinterDialog – диалог подключения печатающего устройства(Add Printer)
- TJvFindFilesDialog – системный диалог для поиска файлов(тот самый, который появляется при нажатии Win+F). Можно указать начальную папку для поиска, в том числе и системную(My Computer, Control Panel, Documents и т.п.). В том же модуле определена функция делающая то же самое - FindFilesDlg.
- TJvFormatDriveDialog – диалог форматирования диска/дискеты(обёртка вокруг функции SHFormatDrive). Можно указать букву диска, тип форматирования(quick/system).
- TJvOrganizeFavoritesDialog – диалог позволяющие реорганизовать Закладки(Favorites) Internet Explorer-a.
- TJvComputerNameDialog – диалог Browse For Computer. Ооочень долго открывается. Фактически является обёрткой над SHBrowseForFolder.
TJvChangeIconDialog – системный диалог выбора иконки(из exe, dll-файлов). Возвращает Filename и IconIndex. - TJvShellAboutDialog – системный диалог About Windows. Аналогичный тому, что появляется при запуске Winver.exe. Позволяет добавить свой текст и свою иконку. Фактически, обёртка вокруг Api функции ShellAbout.
- TJvRunDialog – системный диалог Run(Win+R). Позволяет указать свои заголовок, описание и иконку. Обёртка вокруг Api функции SHRunDialog.
- TJvObjectPropertiesDialog – диалог “Свойства” файла или принтера. Позволяет указать имя файла и название закладки(таба). Обёртка вокруг SHObjectProperties.
- TJvNewLinkDialog – диалог создания ShortCut-a.
TJvOpenWithDialog – диалог “Open With”. Обёртка вокруг функции SHOpenWith. - TJvObjectPickerDialog – диалог “Select Users, Computers, or Groups”. Позволяет выбирать пользователей, группы с разных компьютеров. Довольно навороченный в настройке. Я с ним не разобрался.
- TJvDiskPrompt – диалог “Вставьте диск”
TJvCopyError, TJvDeleteError, TJvRenameError – диалоги с сообщениями об ошибке копирования, удаления и переименования. Обёртки вокруг функций SetupCopyError, SetupDeleteError и SetupRenameError.
Проблемные диалоги
Диалоги с которыми у меня возникли проблемы. Причины проблем в совокупности этих параметров: Windows Vista 32 bit, Delphi 2009, JVCL 3.36 =) Описанные фичи и баги актуальны для JVCL 3.36, точнее для исходников в репозитории на 24-12-2008.
- TJvAddHardwareDialog – глючит
- TJvDiskFullDialog – диалог Disk Full. Обёртка вокруг SHHandleDiskFull. Не сработал.
- TJvExitWindowsDialog - обёртка вокруг SHHandleDiskFull. Вызвал крушение программы/IDE.
- TJvOutOfMemoryDialog - Не сработал
Некоторые любопытные функции из JvWinDialogs.pas
Подробно описывать не буду, то что они делают понятно из названия.
procedure AddToRecentDocs(const FileName: string);
procedure ClearRecentDocs;
function CreateShellLink(const AppName, Desc: string; Dest: string): string;
procedure GetShellLinkInfo(const LinkFile: WideString; var SLI: TShellLinkInfo);
procedure SetShellLinkInfo(const LinkFile: WideString; const SLI: TShellLinkInfo);
TShellLinkInfo содержит следующую информацию о link-файлах:
Путь(PathName), параметры командной строки(Arguments), описаниа(Description), Рабочий каталог(WorkingDirectory), местонахождение иконки(IconLocation), горячая клавиша(HotKey).
-
Ссылки по теме
p.s. а в JCL есть функция вызывающая принудительное выключение компьютера через заданный промежуток времени. Пока я смотрел как работают диалоги, я её запустил пару раз, и Windows только что предупредил меня, что через 10 компьютер будет выключен.
p.p.s. и он-таки выключился. Подобного возмутительного поведения себе даже windows updater не позволял. Снова спасибо Windows Live Writer-у за сохранённый пост. :-)
p.p.s. За время написания обзоров JVCL я успел освоится с их bug-tracker-ом, и зарегистрировать там несколько ошибок. =)
Комментариев нет:
Отправить комментарий