Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Работа с классом `TTaskDialog` в Delphi: решения типичных проблем и примеры использования

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Работа с классом TTaskDialog в Delphi

Класс 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.

with TTaskDialog.Create(Self) do
  try
    Caption := 'О программе';
    Title := 'О Rejbrand BookBase';
    Text := Format('Файл: %s' + #13#10 + 'Авторское право © 2011 Andreas Rejbrand' + #13#10 + '<a href="http://english.rejbrand.se">http://english.rejbrand.se</a>', [GetFileVer(Application.ExeName)]);
    Flags := [tfUseHiconMain, tfAllowDialogCancellation, tfEnableHyperlinks];
    CustomMainIcon := Application.Icon;
    OnHyperlinkClicked := TaskDialogHyperlinkClicked;
    Execute;
  finally
    Free;
  end;

Обработчик события клика по гиперссылке:

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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 15:50:33/0.0037498474121094/0