分数大放松(300分!!!)关于listview的图标问题请教(300分)

  • 主题发起人 主题发起人 Temp
  • 开始时间 开始时间
T

Temp

Unregistered / Unconfirmed
GUEST, unregistred user!
手头有有一串关于文件夹和文件的字符串,请问如何在listview控件中正确显示它们

的图标呢?这个问题有点大,而我在这个方面一窍不通,请诸位大侠指点迷津,

小弟不胜感激
 
这真的是个大问题了,如果你一窃不通的话。不是一两页就说得清楚的,你最好有
针对性地提问。
 
主要属性有:
1.Items 类型为TListItems,是一个由列表内容组成的TListItem的集合。Items有一个属
性编辑器,可用于创建和设置每个项的Caption,ImageIndex和StateIndex属性。
2。TListItems还有一个名为SubItems的属性,类型为TStrings,当以“详细“(Detail)
方式查看列表视图时,SubItems即组成在原来的Caption属性右边的子列下的文字。
3。ViewStyle对应于Windows Explorer中的4个按钮,大图标、小图标、列表和详细方式。
它们分别对应于vsIcon、vsSmallIcon、vsList和vsReport这4个属性值。
4。如果ViewStyle为vsReport方式(即详细方式),则需要在Columns属性内创建TlistColumn

下面举个简单的例子,如下增加单个的图标:

var
ListItem: TListItem;
begin
ListItem:=ListView1.Items.Add;
ListItem.Caption:=Edit1.Text;
...

另外,当ViewStyle属性为vsReport时,列表视图控件有多个列,项位于最左列,如:
var
ListColumn: TListColumn;
begin
ListColumn:=ListView1.Columns.Add;
ListColumn.Caption:=Edit1.Text;
ListColumn.Width:=Length(Edit1.Text)*Font.Size;
ListView1.Selected.SubItems.Add('This is sub item display ...');

...

一般情况下,ListView控件总是与TreeView控件一起使用的。
 
to yanghaijun:

相关的文件名、属性、大小、日期等等我已经成功的分配到了Listview的每一项,关键

问题是如何为相应的文件和文件夹分配图标,请大侠指教
 
使用WIN API 函数ExtractAssociatedIcon得到文件的Icon。
 
葵花宝典里有
 
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.Columns.Add;
ListView1.Column[0].Caption:='First';
ListView1.Columns.Add;
ListView1.Column[1].Caption:='Second';
ListView1.Columns.Add;
ListView1.Column[2].Caption:='Three';
ListView1.ViewStyle:=vsReport;
ListView1.Items.Add;
ListView1.LargeImages:=ImageList1; //以vsICON显示时的大图标
ListView1.SmallImages:=ImageList2; //以vsReport,vsSmallIcon等显示时的图标
ListView1.Items[0].Caption:='FirstValue';
ListView1.Items[0].ImageIndex:=0; //ImageList1与ImageList2中的大小图标索引
//应一一对应
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsReport;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsIcon;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsReport;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsIcon;
end;

 
TO各位大侠:

谢谢各位大侠的热心帮助,现在的主要问题是,这里的文件夹和文件可以为任意类型,

换句话说也是只要有系统注册的文件,都要其显示相应的图标,请问如何做到呢?如何处理

那个Imagelist呢?哪位大侠如果方便,能否给点源代码呢?


To ljqljq & delphifaq:

你们介绍的ExtractAssociatedIcon葵花宝典我正在看




 
还有ExractIcon......
 
将文件类型的ICO提取,进行编号,同时将对应的文件类型编号,然后在ImageIndex中
赋予相应的值就可以了。
 
TO CJF:

如何提取文件类型的icon呢?是不是用ExtractAssociatedIcon,可是我看过那好像是

针对某一个文件的,系统中是否有文件存储了全部已经注册的文件图标呢?

再说明一下:我这里只有文件名和文件夹名,而没有路径的,请大侠指教

 
系统中是否有文件存储了全部已经注册的文件图标呢?

是的。

你先用虚拟的文件试试,例如ABC.COM等,看看可不可以获取ICON。
 
DELPHI有DEMO的,叫V什么的,不记得了,我现在没装DELPHI。
 
好久没有上网了,拖到现在才给大家分配分数,非常不好意思,在此感谢
yanghaijun CJF delphifaq ljqljq Writer 几位大侠的热心帮助,
非常感谢,只是那个ExtractAssociateIcon还是不回用。

 
后退
顶部