const FileName:string):boolean; begin result:=(LowerCase( ExtractFileExt(FileName))=''''.jpg'''') or (LowerCase( ExtractFileExt(FileName))=''''.jpeg''''); end;
4. 我们在窗体的OnCreate和OnDestroy事件处理句柄里添加如下代码:
procedure TForm1.FormCreate(Sender: TObject); begin //设置图标间距,也即缩略图间距 ListView_SetIconSpacing(listview1.handle,90,120);
OriginalBmp:=Tbitmap.Create; ThumbJpg:=TJpegImage.Create;
PreViewBmp:=Tbitmap.Create; PreViewJpg:=TJpegImage.Create;
ThumbBmp:=TBitmap.Create; //缩略图的边框为:80*80,显示图片大小为:64*64 ThumbBmp.Height:=80; ThumbBmp.Width:=80; ThumbBmp.PixelFormat:=pf24bit; imagelist1.Height:=80; imagelist1.Width:=80; listview1.LargeImages:=imagelist1; listview1.ViewStyle:=vsicon;
ImageFileList:=TImageFileList.Create; ImageFileList.Clear;
ProgressBar1:=TProgressBar.Create(self); ProgressBar1.Parent:=StatusBar1; ProgressBar1.Visible:=false; ProgressBar1.Width:=200; ProgressBar1.Height:=StatusBar1.Height-4; ProgressBar1.Left:=StatusBar1.Width-ProgressBar1.Width; ProgressBar1.Top:=2;
IsRefreshImageFinished:=true; end;
procedure TForm1.FormDestroy(Sender: TObject); begin OriginalBmp.Free; ThumbBmp.Free; ImageFileList.Free; ThumbJpg.Free; PreViewBmp.Free; PreViewJpg.Free; ProgressBar1.Free; end;
5. 在ShellTreeView1的OnChange事件里添加下面代码:
procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode); var dir:string; begin //如果上次的RefreshImage过程还没有结束,就退出 if not IsRefreshImageFinished then exit; dir:=ShellTreeView1.Path; //edit1.Text:=dir;
if not (DirectoryExists(dir)) then exit;
//如果是c:\ d:\之类则转换为c: d: if dir[length(dir)]=''''\'''' then delete(dir,length(dir),1);
ImageFileList.ChangeDir(dir);
screen.Cursor:=crHourGlass;
self.Enabled:=false; RefreshImage; self.Enabled:=true; screen.Cursor:=crDefault; end;
6. 其中过程RefreshImage的代码如下: //此过程把ImageFileList中记录的图片文件缩放后加载到ImageList1中,并在 //ListView1中显示 procedure TForm1.RefreshImage; var i:integer; ImageFileName:string; ThumbBmpLeft:integer; ThumbBmpTop:integer; ThumbBmpHeight:integer; ThumbBmpWidth:integer; begin IsRefreshImageFinished:=false; listview1.Clear; imagelist1.Clear;
screen.Cursor:=crHourGlass; ProgressBar1.Max:=ImageFileList.GetFileCount; ProgressBar1.Visible:=true; listview1.Items.BeginUpdate 上一页 [1] [2] [3] [4] [5] [6] 下一页 |