TLinkLabel
предоставляет метку, которая выглядит как ссылка. Ваша задача как программиста - сделать так, чтобы действовал как ссылка, потому что только вы можете знать, как ссылки должны действовать в вашей программе. Вы хотели, чтобы ярлык автоматически открывал веб-браузер пользователя по умолчанию, используя URL-адрес в ярлыке, но это не единственное, что делают ссылки. Например:
- Internet Explorer не является браузером по умолчанию, но когда я нажимаю ссылку в Internet Explorer, я не ожидаю, что связанная страница откроется в Firefox.
- Когда я нажимаю на ссылку в справочной программе, я ожидаю, что связанная тема появится в справочной программе, а не в любом веб-браузере вообще.
- Страницы настроек в Eclipse очень сложны. Настройки на одной странице иногда связаны с настройками на другой странице. На этих страницах есть ссылки, которые ведут пользователя непосредственно на соответствующую страницу. В этом случае нет ни URL-адреса, ни HTML-кода, и все же они по-прежнему помечены подчеркнутым текстом.
Некоторые программы пытаются предложить выбор между открытием ссылок в новых окнах и повторным использованием старых окон. Вы не можете реализовать эту функцию, не зная, какой браузер используется. Ваша программа может предложить пользователю выбор игнорировать настройки браузера по умолчанию и всегда использовать определенный. Для этого ваш пользовательский интерфейс не может делать слишком много предположений о том, что должна делать программа.
Полагаю, вы имеете в виду TLinkLabel
элемент управления, который поставляется с Delphi. (В моих версиях такого компонента нет.) Я полагаю, что элемент управления Delphi предназначен для имитации элемента из библиотеки классов .Net . Он может содержать несколько ссылок, и каждая ссылка может делать что-то свое.
Если вам нужен элемент управления, который всегда выполняет действие оболочки по умолчанию для URL-адресов, рассмотрите возможность использования другого TLinkLabel
; от Александра Баха делает именно то, что вы ожидали. Он из Delphi 3, но он должен работать без изменений и во всех более поздних версиях, включая Delphi 2009. Если вы посмотрите на код, вы увидите, как он работает. Он просто вызывает ShellExecute
, как показывает ответ Цезаря .