Listview中的链接标签(Delphi)

Listview中的链接标签(Delphi),delphi,listview,hyperlink,linklabel,Delphi,Listview,Hyperlink,Linklabel,如何使列表视图中的项目包含链接(直接指向html页面) 感谢您使用支持现成的列表视图或网格(例如,具有支持“迷你”html的组件),或者使用标准的TListView执行以下操作: type TLinkItem = class(TObject) private FCaption: string; FURL: string; public constructor Create(const aCaption, aURL: string); property

如何使列表视图中的项目包含链接(直接指向html页面)


感谢您

使用支持现成的列表视图或网格(例如,具有支持“迷你”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中为链接标题添加颜色。如果你坚持长期坚持的互联网标准,你会把它们变成蓝色和下划线。

嗯,是的,用Delphi调用默认浏览器很容易。下面是一个验证的基本示例(因此您可以在列表中包含非URL值):


我认为你应该编辑你的代码!什么是“燧石”?我不明白,你应该吗?我想我已经给了你足够的时间,让你在没有有效地为你工作的情况下继续工作。FLinkItems在包含TListView组件的表单的类声明中声明为成员字段。如何为链接项设置蓝色和下划线?
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;