2016-12-19 8 views
0

Я хочу сделать гиперссылку в кнопку. Если кнопка нажата, браузер по умолчанию откроет ссылку. Я попробовал его с версией Delphi, но он не работает в Lazarus. Вот код, который я пробовал. Как сделать это в версии Lazarus?Как создать ссылку в Lazarus?

Uses ShellApi 

begin 
ShellExecute (0, 'Open', 'link website', '', '', SW_SHOWNORMAL); 
end; 
+2

Этот код будет работать на Windows, а так как 'ShellExecute' существует только на Windows, я предполагаю, что вы ориентируетесь Windows. Получаете ли вы какие-либо ошибки? Вы проверяете ошибки при вызове 'ShellExecute'. Вы прочитали его документацию? Я сомневаюсь, потому что эта документация говорит вам вместо этого вызывать «ShellExecuteEx». Это происходит потому, что 'ShellExecuteEx' способен правильно сообщать о ошибках. Я предполагаю, что вы скопировали этот код, не понимая, что он делает. Этот подход бесполезен. Стремитесь понять. –

+0

[OpenURL] (http://lazarus-ccr.sourceforge.net/docs/lcl/lclintf/openurl.html)? – Abelisto

ответ

1

ShellExecute - это то, что я никогда не использую, поскольку всегда стараюсь, чтобы мои программы пересекали платформу. Я всегда использую TProcess или RunCommand. Есть полная документация по ссылке ниже, что довольно хорошо.

http://wiki.freepascal.org/Executing_External_Programs

Если вы действительно хотите использовать ShellExecute, то я отмечаю, что в ссылке он сказать следующее о инициализации COM:

ShellExecute является стандартной функцией MS Windows (ShellApi.h) с хорошим документацию на MSDN (обратите внимание на их замечания об инициализации COM, если функция окажется ненадежной).

Надеюсь, это поможет. Если нет, я постараюсь помочь вам дальше.

1

Простой межплатформенный способ открытия ссылки предоставляется функцией OpenURL. Он доступен в комплекте LCLIntf, который поставляется в комплекте с Lazarus.

Пример:

procedure OnClick; 
var 
    found: boolean; 
begin 
    found := OpenURL('http://nowhere.loopback.edu'); 
end;