Класс TTaskDialog был введен в Delphi 2009 и представляет собой удобный инструмент для создания диалоговых окон, характерных для операционных систем Vista и Windows 7. Однако, несмотря на свою функциональность, использование этого класса может быть связано с определенными трудностями, особенно если не учитывать требования совместимости с более старыми версиями Windows, такими как XP.
Основные возможности TTaskDialog
TTaskDialog позволяет создавать диалоговые окна с различными типами кнопок, гиперссылками, расширенным текстом, а также использовать пользовательские иконки. Он также поддерживает отображение дополнительной информации при нажатии на кнопку "Подробнее".
Пример использования TTaskDialog
with TTaskDialog.Create(Self) do
try
Caption := 'My Application';
Title := 'Hello World!';
Text := 'Это пример использования TTaskDialog.';
CommonButtons := [tcbClose];
Execute;
finally
Free;
end;
Условия совместимости
Перед использованием TTaskDialog необходимо убедиться, что текущая операционная система поддерживает данный тип диалогов. В случае использования Windows XP, следует использовать стандартное диалоговое окно MessageBox.
if (Win32MajorVersion >= 6) and ThemeServices.ThemesEnabled then
begin
// Создание и отображение TTaskDialog
end
else
begin
// Отображение MessageBox для совместимости с XP
end;
Работа с гиперссылками
Для включения гиперссылок в текст диалогового окна, необходимо установить флаг tfEnableHyperlinks.
procedure TForm1.TaskDialogHyperLinkClicked(Sender: TObject);
begin
if Sender is TTaskDialog then
with Sender as TTaskDialog do
ShellExecute(0, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
end;
Создание пользовательских кнопок
Кнопки могут быть добавлены в диалоговое окно вручную, и каждая кнопка может иметь свой текст подсказки:
with TTaskDialog.Create(Self) do
try
Title := 'Подтверждение удаления';
Caption := 'Rejbrand BookBase';
Text := Format('Вы действительно хотите удалить файл книги "%s"?', [FNameOfBook]);
CommonButtons := [];
with TTaskDialogButtonItem(Buttons.Add) do
begin
Caption := 'Удалить';
CommandLinkHint := 'Удалить книгу из каталога.';
ModalResult := mrYes;
end;
with TTaskDialogButtonItem(Buttons.Add) do
begin
Caption := 'Сохранить';
CommandLinkHint := 'Сохранить книгу в каталоге.';
ModalResult := mrNo;
end;
Flags := [tfUseCommandLinks];
MainIcon := tdiNone;
if Execute then
if ModalResult = mrYes then
DoDelete;
finally
Free;
end;
Заключение
TTaskDialog является мощным инструментом для создания диалоговых окон, но требует внимательного подхода к вопросам совместимости с различными версиями Windows. Использование дополнительных библиотек, таких как SynTaskDialog, может помочь в создании более универсальных диалогов, поддерживающих старые версии операционной системы.
Класс `TTaskDialog` в Delphi позволяет создавать диалоговые окна в стиле операционных систем Vista и Windows 7, но требует учета совместимости с более старыми версиями Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.