下面是一个图片浏览器的例子,你可以在FileListBox中排序,在用
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, FileCtrl,jpeg, ComCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FilterComboBox1: TFilterComboBox;
FileListBox1: TFileListBox;
Panel1: TPanel;
B_next: TBitBtn;
ScrollBox1: TScrollBox;
Image1: TImage;
B_pre: TBitBtn;
B_exit: TBitBtn;
StatusBar1: TStatusBar;
procedure FormCreate(Sender: TObject);
procedure FileListBox1Click(Sender: TObject);
procedure B_nextClick(Sender: TObject);
procedure B_exitClick(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
procedure B_preClick(Sender: TObject);
procedure FileListBox1Change(Sender: TObject);
procedure DriveComboBox1Change(Sender: TObject);
procedure DirectoryListBox1Change(Sender: TObject);
procedure FilterComboBox1Change(Sender: TObject);
private
{ Private declarations }
procedure getpic;
public
{ Public declarations }
jpg_image: Tjpegimage;
num: integer; //图片在文件列表中的位置
filename: String; //图片文件名
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.getpic;
var
str: String;
begin
str:=ansiuppercase(extractfileext(FileListBox1.Items[num])); //文件扩展名
if (str='.BMP') or (str='.ICO') then //如果是位图文件或图标文件
Image1.Picture.LoadFromFile(FileListBox1.Items[num])
else if (str='.JPG') then //如果是JPEG格式
begin
jpg_image.LoadFromFile(FileListBox1.Items[num]);
Image1.Picture.Graphic:=jpg_image;
end;
filename:='现在的文件是:'+FileListBox1.Items[num];
StatusBar1.SimpleText:=filename;
B_next.Enabled:=True;
B_pre.Enabled:=True;
if num=0 then //如果是第一个文件
B_pre.Enabled:=False
else if (num=FileListBox1.Items.Count-1) then //如果是最后一个文件
B_next.Enabled:=False;
FileListBox1.ItemIndex:=num; //定位文件列表框中的位置
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
jpg_image:=TJpegimage.Create; //创建JPG对象
FileListBox1Change(sender); //尝试显示文件
end;
procedure TForm1.FileListBox1Click(Sender: TObject);
begin
num:=FileListBox1.ItemIndex; //单击文件列表框中的文件,num设为条目的索引值
getpic;
end;
procedure TForm1.B_nextClick(Sender: TObject);
begin
Inc(num); //文件num加1
getpic;
end;
procedure TForm1.B_exitClick(Sender: TObject);
begin
Close;
jpg_image.Free; //释放JPG对象
end;
procedure TForm1.Image1DblClick(Sender: TObject);
begin
Form2:=TForm2.Create(Application); //动态创建Form2窗口
Form2.Show; //显示Form2窗口
Form1.Hide; //隐藏主窗口
end;
procedure TForm1.B_preClick(Sender: TObject);
begin
Dec(num); //文件num减1
getpic;
end;
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
if FileListBox1.Items.Count>0 then
getpic //如果文件列表框中文件数不为0,尝试显示图片
else
begin
B_next.Enabled:=False;
B_pre.Enabled:=False;
end;
end;
procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
num:=0;
end;
procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
num:=0;
end;
procedure TForm1.FilterComboBox1Change(Sender: TObject);
begin
num:=0;
//目录、过滤器发生变化时,将文件设置位第一个
end;
end.