Как заставить TLabel вести себя как гиперссылка в Delphi?

Как заставить TLabel вести себя как гиперссылка в Delphi?

Примечание: меня не интересует использование TLinkLabel из-за проблем с обратной совместимостью.


person Rowan    schedule 25.08.2009    source источник


Ответы (4)


Раскрасьте его в синий цвет, установите стиль подчеркивания и добавьте событие OnClick!

procedure TForm1.Label1Click(Sender: TObject);
var
  MyLink: string;
begin
  MyLink := 'http://www.mysite.com/';
  ShellExecute(Application.Handle, PChar('open'), PChar(MyLink),    
   nil, nil, SW_SHOW);
end;
person DmitryK    schedule 25.08.2009
comment
Ага, это то, что я искал. Я приму его через день или два, чтобы убедиться, что ни у кого нет других идей. Ваше здоровье. - person Rowan; 25.08.2009
comment
Не забудьте добавить использование ShellApi; - person Galvion; 10.08.2013

Это зависит от того, что вам нужно от гиперссылок. Я бы просто ...

  • установите синий цвет шрифта
  • используйте события OnMouse [Enter | Leave | Move], чтобы соответствующим образом применить стиль подчеркивания к шрифту.
  • используйте событие OnClick, чтобы запустить браузер и при необходимости изменить цвет шрифта.
person moobaa    schedule 25.08.2009
comment
OnMouseEnter и OnMouseLeave недоступны в D7 и ранее (не уверен в D2005), поэтому комментарий о TLinkLabel также исключает это. Вам нужно будет использовать OnMouseMove - person Gerry Coll; 25.08.2009
comment
Я только что проверил - в Delphi 7 определенно есть OnMouseEnter и OnMouseLeave:} - person moobaa; 26.08.2009
comment
@Gerry: Да, это так; тебе просто нужно работать немного усерднее. ‹G› Вы просто добавляете обработчики для сообщений CM_MOUSEENTER и CM_MOUSELEAVE. - person Ken White; 26.08.2009

Какую версию Delphi вы используете? Глядя на мою IDE Delphi 4, TLabel не имеет события OnMouseEnter / OnMouseLeave, которое было бы необходимо для изменения курсора на «Рука», когда пользователь наводит курсор на «ссылку».

У него есть событие OnClick, которое вы можете подключить для запуска веб-браузера пользователя:

Как вывести или запустить браузер в Delphi

person Ian Kemp    schedule 25.08.2009
comment
Delphi 2009. Возможно, наведение указателя мыши было неправильным термином. В свойствах TLabel в D2009 вы можете указать, какой курсор следует использовать для этой метки. - person Rowan; 25.08.2009

Можно переходить по ссылкам и фокусироваться на них в браузере. Поэтому я бы подумал об использовании оконного элемента управления (например, TButton, нарисованного владельцем) для этой задачи.

person Uli Gerhardt    schedule 25.08.2009