請教用ListView顯示文件夾問題 |
尚未結案
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
我在嘗試用ListView,可下面的例子出錯,我不知道錯在哪里?各路大蝦能否指教一下?謝謝...
{
該演示程序可以顯示各類Windows系統圖標,包括文件圖標、磁盤圖標、文件夾圖標、用戶特定可執行文件圖標。這些圖標都不需要親手繪製。
}
unit Unit1; const
Test = 'C:\';
{ Test爲測試數據,在本例中返回的是一個驅動器圖標。讀者
可以自行選擇其他測試數據如:Test:='C:\Autoexec.bat' 等等。} var
Form1: TForm1;
ShFileInfo: TSHFILEINFO; function GetFileIconIndex(FileName: String): Integer;
{ 獲取圖標的序號函數 }
var
Ext: String;
begin
Ext := FileName;
Result := ShGetFileInfo(PChar(Ext), 0, SHFileInfo, SizeOf(SHFileInfo),
SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
Result := SHFileInfo.iIcon;
{ 返回獲取的圖標序號 }
end; procedure TForm1.FormCreate(Sender: TObject);
begin
with ListView1 do
begin
SmallImages := TImageList.CreateSize(32, 32);
SmallImages.ShareImages := True;
SmallImages.Handle := ShGetFileInfo('*.*', 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_LARGEICON or SHGFI_ICON or SHGFI_SYSICONINDEX);
LargeImages := TImageList.CreateSize(32, 32);
LargeImages.ShareImages := True;
LargeImages.Handle := ShGetFileInfo('*.*', 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_LARGEICON or SHGFI_ICON or SHGFI_SYSICONINDEX);
end;
{ 分配系統資源給ListView1組件以顯示圖標 }
end; procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.Items.Item[0].ImageIndex := GetFileIconIndex(Test);
{ 爲ListView1中的第一個項目繪製圖標 }
end; end.
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
谢谢alphakao,我按照您的方法试了,虽然没有出错提示,可结果什么也没有?? <>< face="Verdana, Arial, Helvetica">引言:
procedure TForm1.Button1Click(Sender: TObject); var X:TListItem; begin x:=ListView1.Items.Add; x.ImageIndex:= GetFileIconIndex(Test); //ListView1.Items.Item[0].ImageIndex := GetFileIconIndex(Test); // 還沒有東西,就要用了,那當然會錯呀~ { ?ListView1中的第一??目?制?? } end; |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: 我在嘗試用ListView,可下面的例子出錯,我不知道錯在哪里?各路大蝦能否指教一下?謝謝... { 該演示程序可以顯示各類Windows系統圖標,包括文件圖標、磁盤圖標、文件夾圖標、用戶特定可執行文件圖標。這些圖標都不需要親手繪製。 } unit Unit1; const Test = 'C:\'; { Test爲測試數據,在本例中返回的是一個驅動器圖標。讀者 可以自行選擇其他測試數據如:Test:='C:\Autoexec.bat' 等等。} var Form1: TForm1; ShFileInfo: TSHFILEINFO;qalin您好:试试上面所修改,不过不知您FormCreate事件中的作用为何,好像是做了重复的工作,猜应该是Listview1中没项目,所以看不出效果来,试试看 ——行径窄处,留一步与人行—— ——Never give up, never surrender—— |
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
引言: [quote]谢谢deity,我按您说的改了,而且用下面方式加了项目: with ListView1.Items.Add do begin Caption:=test; //添加第一项 ImageIndex := GetFileIconIndex(test); end; 可还是没有图标出现,我想可能是我的环境不行,我用的是Win2000Pro Delphi7。那可不好办了 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
引言: qalin 你好: 如果你只是要顯示...可以參用 TShellListView 元件(在 "Samples" Page 下). 之前建議你用 TListView 係考慮其他的功能(如在 TitleClick 可排序), 據我所知, 這些功能在 TShellListView 元件, 不容易做.谢谢Mickey! 我本来的意思是要做一个客户端,可以自动登录到文件服务器,并能看见指定目录下的所有文件夹和文件,但要求限定一次只能对一个文件进行打开或者复制的操作.本想用ftp要安全一些,可界面要写得友好一些不容易,而且不知道速度会不会慢.如果用TShellListView又不安全...所以才考虑尝试用TreeView FileListBox(我发现这个速度很快)或者用TreeView ListView,没想到中途还是碰到很多问题,呵呵在过一会还不行我就用 > |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: |
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |