我建設需要上Form_Create
,填充TListView
稱爲FileList
一個程序,我想填充目錄是編譯程序+ \Files
,因爲我從來沒有使用過TListView
我想知道如何做到這一點?清單文件在目錄上的某個TListView的
回答
有多個部分你的問題。我將在這裏提供概述。如果您需要任何特定步驟的幫助,請發佈更具體的後續問題。
確定「編譯的程序在哪裏」指的是什麼。
要獲取EXE文件的完整路徑,請撥打
ParamStr(0)
。要從該字符串中刪除EXE文件名,所以您只需要目錄部分,請撥打ExtractFilePath
。確保它以反斜槓(IncludeTrailingPathDelimiter
)結尾,然後附加您的「文件」目錄。獲取文件列表。
使用
FindFirst
和FindNext
來製作一個查看所有文件的循環。名字將包括「。」和「..」相對目錄名稱,因此您可能希望排除它們。請注意,這些文件不是以任何特定順序枚舉的。例如,如果你需要按字母順序排序,你需要自己做。 (他們可能出現是在測試中的字母順序,但不會永遠是正確的。)var Rec: TSearchRec; begin if FindFirst(path + '\*', faAnyFile, Rec) = 0 then try repeat if (Rec.Name = '.') or (Rec.Name = '..') then continue; if (Rec.Attr and faVolumeID) = faVolumeID then continue; // nothing useful to do with volume IDs if (Rec.Attr and faHidden) = faHidden then continue; // honor the OS "hidden" setting if (Rec.Attr and faDirectory) = faDirectory then ; // This is a directory. Might want to do something special. DoSomethingWithFile(Rec.Name); until FindNext(Rec) <> 0; finally SysUtils.FindClose(Rec); end; end;
添加節點控制來表示的文件。
您可能希望在我上面提到的假設的
DoSomethingWithFile
函數中執行此操作。使用列表視圖的Items
屬性對項目進行操作,例如添加新項目。var Item: TListItem; begin Item := ListView.Items.Add; Item.Caption := FileName; end;
TListItem
具有附加屬性;檢查文檔的細節。如果您以「報告」模式顯示列表視圖,則可以使用SubItems
屬性,其中可以有多個列用於單個節點。將圖像與項目關聯。
列表視圖中節點的圖像來自相關圖像列表
LargeImages
和SmallImages
。它們是指您的表單上的一個或多個TImageList
組件。將圖標圖像放在那裏,然後將項目'ImageIndex
屬性分配給相應的數字。
根據您希望如何精心設計你的程序是,你不妨用Delphi的TShellListView
控制,而不是做自己所有上述工作。
繪製行時需要顯示圖像。
這應該給你一個想法: http://www.delphidabbler.com/articles?article=16 http://delphi.about.com/od/delphitips2008/qt/lv_checkbox_bmp.htm
唯一的區別是,你繪製圖標/圖像。 在這裏,您將瞭解如何在網格中執行此操作:http://delphi.about.com/library/weekly/aa032205a.htm 因此,您都可以獲得這個想法。
如果您在包含兩個圖像(一個前置文件和一個目錄)的表單上放置一個TImagelist,然後將TImagelist分配給TListviews LargeImages屬性,則可以使用下面的代碼。
procedure TForm2.Button1Click(Sender: TObject);
var li:TListItem;
SR: TSearchRec;
begin
FileList.Items.BeginUpdate;
try
FileList.Items.Clear;
FindFirst(ExtractFilePath(Application.ExeName) +'*.*', faAnyFile, SR);
try
repeat
li := FileList.Items.Add;
li.Caption := SR.Name;
if ((SR.Attr and faDirectory) <> 0) then li.ImageIndex := 1
else li.ImageIndex := 0;
until (FindNext(SR) <> 0);
finally
FindClose(SR);
end;
finally
FileList.Items.EndUpdate;
end;
end;
然後,您可以通過添加不同的圖像到的TImageList不同文件類型,並使用ExtractFileExt(SR.Name)來獲取文件擴展戰果
if ((SR.Attr and faDirectory) <> 0) then li.ImageIndex := 1
else if lowercase(ExtractFileExt(SR.Name)) = '.png' then li.ImageIndex := 2
else if lowercase(ExtractFileExt(SR.Name)) = '.pdf' then li.ImageIndex := 3
else li.ImageIndex := 0;
- 1. 文件夾子目錄「目錄」清單
- 2. 清單目錄中的文件的
- 3. 清單目錄
- 4. 在GNU清單上跳過目錄C
- 5. 如何捕捉文件或目錄中的某個目錄php
- 6. 清單在UNIX目錄/子目錄
- 7. 問題清單文件在bash有空格的目錄路徑
- 8. 我做了一些更改後,如何在某個目錄下的某個目錄下保存某些文件
- 9. TListView的組和項目清算和重裝組和項目
- 10. 計算某個目錄內的文件和文件夾
- 11. 從CPIO文件複製某個文件到不同的目錄
- 12. 檢索文件的清單目錄中的
- 13. 清除目錄中的文件名
- 14. 清單類在包的子目錄
- 15. 將文件存儲在多個目錄vs單個目錄中
- 16. 清單與目錄和子目錄與路徑(Python)的所有文件
- 17. 如何替換jar文件中某個目錄內的某些文件?
- 18. Delphi:Livebindings TListView上的AfterScroll
- 19. 如何在Java中遍歷某個目錄的文件?
- 20. 重寫的.htaccess文件只有在某個目錄
- 21. 在Unix中的另一個目錄中的某個目錄中創建一個文本文件
- 22. 清單目錄和文件的樹狀結構
- 23. 沒有這樣的文件或目錄(公共/資產/清單*)
- 24. 如何停止文件導航到某個目錄之上?
- 25. ClearCase在單個目錄上的權限
- 26. asp.net項目中的清單文件
- 27. puppet 3在配置文件中添加清單目錄
- 28. blueimp文件上傳。如何清理現有的文件清單
- 29. 將某些文件從一個目錄到另一個 - Python的
- 30. PHP文件上傳,目標目錄上方upload.php文件目錄
+1非常好的答案,羅布! – jpfollenius 2010-01-08 08:08:37
堆棧溢出行爲的一個很好的例子。真的很好回答Rob。 – robsoft 2010-01-08 09:30:30