線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1109
推到 Plurk!
推到 Facebook!

怎样用LISTVIEW增加文件?

缺席
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-28 17:27:26 IP:218.80.xxx.xxx 未訂閱
怎样用LISTVIEW增加OpenDialog.FileName的文件,而且是可以不断增加进去
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-28 17:51:55 IP:219.77.xxx.xxx 未訂閱
你是想先用 OpenDialog 選取檔案,然後每一次都將檔案放入 ListView 內?
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-28 18:02:57 IP:218.80.xxx.xxx 未訂閱
是呀,但不知道listview用什么函数来添加文件的
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-28 19:21:23 IP:219.77.xxx.xxx 未訂閱
發表人 -
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-28 19:22:18 IP:219.76.xxx.xxx 未訂閱
 
object Form1: TForm1
  Left = 192
  Top = 107
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnClose = FormClose
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 18
    Top = 330
    Width = 32
    Height = 13
    Caption = 'Label1'
  end
  object ListView1: TListView
    Left = 16
    Top = 16
    Width = 257
    Height = 307
    Columns = <
      item
        AutoSize = True
      end>
    OwnerData = True
    TabOrder = 0
    ViewStyle = vsReport
    OnChange = ListView1Change
    OnData = ListView1Data
    OnGetImageIndex = ListView1GetImageIndex
  end
  object Button1: TButton
    Left = 300
    Top = 32
    Width = 75
    Height = 25
    Caption = 'Files'
    TabOrder = 1
    OnClick = Button1Click
  end
  object OpenDialog1: TOpenDialog
    DefaultExt = '*.*'
    Options = [ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing]
    Left = 406
    Top = 40
  end
  object ImageList1: TImageList
    Left = 354
    Top = 204
  end
end
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   ActiveX, Dialogs, StdCtrls, ComCtrls, ImgList, ShellAPI, shlobj;    type
  PFileItem = ^TFileItem ;
  TFileItem = Record
    FileName   : TFileName ;
    FullPath   : TFileName ;
    ImageIndex : Integer ;
  end;
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    ImageList1: TImageList;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ListView1Data(Sender: TObject; Item: TListItem);
    procedure ListView1Change(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure ListView1GetImageIndex(Sender: TObject; Item: TListItem);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FFileList : TList ;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var
  aRecord : PFileItem ;
  i, j : Integer ;
  SFI: TSHFileInfo;
  lFound : Boolean ;
  nAdded : Integer ;
begin
  nAdded := 0 ;
  if OpenDialog1.Execute then
  begin
    for i := 0 to (OpenDialog1.Files.Count - 1) do
    begin
      lFound := False ;
      if FFileList.Count > 0 then
      begin
        for j := 0 to (FFileList.Count - 1) do
        begin
          if OpenDialog1.Files[i] = PFileItem(FFileList.Items[j]).FullPath then
          begin
            lFound := True ;
            break ;
          end;
        end;
      end;
      if Not(lFound) then
      begin
        Inc(nAdded) ;
        New(aRecord) ;
        aRecord.FileName := ExtractFileName(OpenDialog1.Files[i]) ;
        aRecord.FullPath := OpenDialog1.Files[i] ;
        SHGetFileInfo(PChar(aRecord.FullPath), 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
        aRecord.ImageIndex := SFI.iIcon ;
        FFileList.Add(aRecord) ;
      end;
    end;
    if nAdded > 0 then
      ListView1.Items.Count := FFileList.Count ;
  end;
end;    procedure TForm1.FormCreate(Sender: TObject);
var
  SFI: TSHFileInfo;
begin
  FFileList := TList.Create ;
  ImageList1.Handle := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
  ImageList1.ShareImages := True;
  ListView1.SmallImages := ImageList1 ;
end;    procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  if Item.Index < FFileList.Count then
    Item.Caption := PFileItem(FFileList.Items[Item.Index]).FileName ;
end;    procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  if Assigned(Item) and
     (Item.Index > -1) and
     (Item.Index < FFileList.Count) then
    Label1.Caption := PFileItem(FFileList.Items[Item.Index]).FullPath ;
end;    procedure TForm1.ListView1GetImageIndex(Sender: TObject; Item: TListItem);
begin
  if (Item.Index > -1) and
     (Item.Index < FFileList.Count) then
     Item.ImageIndex :=  PFileItem(FFileList.Items[Item.Index]).ImageIndex ;
end;    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i : Integer ;
begin
  ListView1.Items.Count := 0 ;
  if FFileList.Count > 0 then
  begin
    for i := 0 to (FFileList.Count - 1) do
    begin
      Dispose(PFileItem(FFileList.Items[i])) ;
    end;
    FFileList.Clear ;
  end;
  FFileList.Free ;
end;    end.    
這個供你參考的,檔案清單也沒有排序,你可以自行加入,看看是否合用。
系統時間:2024-06-15 2:18:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!