2011-01-29 2 views

ответ

2

Ум, да, это легко сделать и вызвать браузер по умолчанию с помощью Delphi. Вот базовый пример с проверкой (так что вы можете иметь значения, отличные от URL-адреса, в вашем списке):

uses ShLwApi, ShellApi; 

procedure TForm1.ListView1DblClick(Sender: TObject); 
begin 
    if PathIsURL(PChar(ListView1.Selected.Caption)) then 
    begin 
    ShellExecute(self.WindowHandle, 'open', PChar(ListView1.Selected.Caption), 
     nil, nil, SW_SHOWNORMAL); 
    end; 
end; 
+0

И как установить синий цвет и подчеркивание для ссылок? – Kermia

5

Либо использовать ListView или сетку, которая поддерживает эту опцию готовые (tms software, например, имеет компоненты, которые поддерживают «мини» HTML) или со стандартным TListView сделать что-то вроде:

type 
    TLinkItem = class(TObject) 
    private 
    FCaption: string; 
    FURL: string; 
    public 
    constructor Create(const aCaption, aURL: string); 
    property Caption: string read FCaption write FCaption; 
    property URL: string read FURL write FURL; 
    end; 

constructor TLinkItem.Create(const aCaption, aURL: string); 
begin 
    FCaption := aCaption; 
    FURL := aURL; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
var 
    Item: TListItem; 
    i: Integer; 
begin 
    FLinkItems := TObjectList.Create({AOwnsObjects=}True); 
    FLinkItems.Add(TLinkItem.Create('StackOverflow', 'http://www.stackoverflow.com')); 
    FLinkItems.Add(TLinkItem.Create('BJM Software', 'http://www.bjmsoftware.com')); 

    for i := 0 to FLinkItems.Count - 1 do 
    begin 
    Item := ListView1.Items.Add; 
    Item.Caption := TLinkItem(FLinkItems[i]).Caption; 
    Item.Data := Pointer(FLinkItems[i]); 
    end; 
end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
    FreeAndNil(FLinkItems); 
end; 

procedure TForm1.ListView1Click(Sender: TObject); 
var 
    LinkItem: TLinkItem; 
    URL: string; 
begin 
    LinkItem := TLinkItem(ListView1.Items[ListView1.ItemIndex].Data); 
    URL := LinkItem.URL; 
    ShellExecute(Handle, 'open', PChar(URL), nil, nil, SW_SHOW); 
end; 

Это зависит от вас, как вы хотите, чтобы ваш цвет отображал ссылки в вашем ListView. Если вы будете придерживаться давно установленных стандартов Интернета, вы сделаете их синими и подчеркнутыми.

+0

Думаю, вы должны отредактировать свой код! что такое «FLinkItems»? я не понимаю. – Kermia

+2

Должен? Я думаю, что я дал вам достаточно, чтобы продолжить, не выполняя для вас свою работу. FLinkItems объявляется как поле-член в объявлении класса формы, которая содержит компонент TListView. –

Смежные вопросы