Как использовать класс TTaskDialog
(в Delphi 2009 и более поздних версиях)? Официальная документация не помогла. Фактически, вы узнаете намного больше, изучая класс с помощью CodeInsight или исходного кода VCL. Там нет педагогических объяснений, но, по крайней мере, ошибок тоже нет (ну, всего несколько).
А совсем недавно мне стало интересно, как можно реагировать на щелчки гиперссылок в диалоговом окне. Действительно, установив флаг tfEnableHyperlinks
, вы можете включить гиперссылки HTML в текстовые части диалога. (Что ж, документ сказал о флаге: "Если set, content, footer и расширенный текст могут содержать гиперссылки." Естественно, "очевидно", что ссылки реализованы с использованием HTML-элемента <A
.) И мне удалось чтобы понять, что вы используете событие OnHyperLinkClick
для ответа на клики по гиперссылкам. Но это событие TNotifyEvent
, так как узнать, по какой ссылке щелкнули? Ну, в документации ничего не сказано об этом, поэтому я должен был догадаться. В конце концов я обнаружил, что публичное свойство URL
диалогового окна установлено, поэтому я мог сделать
procedure TmainFrm.TaskDialogHyperLinkClicked(Sender: TObject);
begin
if Sender is TTaskDialog then
with Sender as TTaskDialog do
ShellExecute(0, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
end;
Официальная документация гласит, что это свойство:
URL содержит URL для Задачи Диалог.
Теперь вы должны признать, что это отличное объяснение! Но это хуже, чем это: в документации не только нет объяснений, но и есть ошибки. Например,,
ExpandButtonCaption: дополнительная информация для этой кнопки.
Это не очень точно. Какая кнопка? Если вы показываете справку по этому конкретному свойству, там написано
ExpandButtonCaption содержит дополнительный текст, который будет отображаться при раскрытии заголовка.
Тоже не хорошо. Какая подпись? Правильное объяснение будет
ExpandButtonCaption - это текст, отображаемый рядом с кнопкой, которая позволяет пользователю развернуть диалоговое окно, чтобы оно отображало дополнительную информацию. Например, это свойство может быть "Подробнее".
Во всяком случае, в настоящее время я пытаюсь создать диалог с двумя кнопками командной строки. Я знаю, что операционная система может отображать эти кнопки как с надписью, так и с более подробным объяснением, но, похоже, я не могу заставить ее работать с помощью TTaskButton
. Документация не очень хорошая.
Но вместо того, чтобы спрашивать, как достичь этой конкретной цели здесь, в SO, я задам другой вопрос:
Есть ли (неофициальная) документация для класса TTaskDialog?