如下图所示建立工程: 代码如下: unit main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, FileCtrl, StdCtrls, ExtCtrls, Buttons,Jpeg, ImgList,Registry; const MaxNum=6; type ShowDataRecord=Record Image:TImage; Panel:TPanel; FileName:string[15]; end; TMainForm = class(TForm) DriveComboBox1: TDriveComboBox; FilterComboBox1: TFilterComboBox; DirectoryListBox1: TDirectoryListBox; FileListBox1: TFileListBox; changebt: TBitBtn; choosebt: TBitBtn; Panel1: TPanel; Image1: TImage; Label1: TLabel; procedure changebtClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FileListBox1Click(Sender: TObject); procedure choosebtClick(Sender: TObject); private { Private declarations } public { Public declarations } JpgImage:TJpegImage; PictureWidth,PictureHeight:Integer; end; var MainForm: TMainForm; implementation uses Bigpas; {$R *.DFM} procedure TMainForm.changebtClick(Sender: TObject); Var Reg:Tregistry;{Tregistry 对象在Registry 单元中声明,需用Uses令引用Registry单元} Begin If (Filelistbox1.FileName='') Then Messagedlg('请先选择一幅位图',mtinformation,[mbOK],0) Else Begin Reg:=Tregistry.Create;{创建Tregistry对象的实例} Reg.Rootkey:= Hkey_Current_User;{设置根键名称} Reg.OpenKey('Control Panel/Desktop',False); Reg.WriteString ('TileWallPaper','0'); Reg.WriteString('Wallpaper',filelistbox1.FileName);{向TileWallpaper 和Wallpaper串覆盖写入新值} Systemparametersinfo(SPI_SETDESKWallpaper,0,Nil,SPIF_SendChange);{向Windows发送消息,通知Windows更换壁纸} Reg.CloseKey;{将更改内容写入注册表并关闭} Reg.Free;{释放对象} End; End; procedure TMainForm.FormCreate(Sender: TObject);{初始化程序} begin Image1.visible:=false; Label1.Caption:='可'+#13+'选'+#13+'文'+#13+'件'+#13'列'+#13+'表'; JpgImage:=TJpegImage.Create; PictureWidth:=0; PictureHeight:=0; end; procedure TMainForm.FormDestroy(Sender: TObject);{释放内存} begin JpgImage.Free; end; procedure TMainForm.FileListBox1Click(Sender: TObject); var FileExt:String;{该变量用来存放文件扩展名} Begin FileExt:=AnsiLowerCase(ExtractFileExt(FileListBox1.FileName)); if FileExt='.bmp' then {如果是.bmp和.ico格式文件} begin Image1.Show; Image1.Picture.LoadFromFile(FileListBox1.FileName); PictureWidth:=Image1.Picture.Width; PictureHeight:=Image1.Picture.Height; end else if FileExt='.jpg' then{如果是.jpg文件} begin JpgImage.LoadFromFile(FileListBox1.FileName); Image1.Picture.Graphic:=jpgImage; PictureWidth:=JpgImage.Width; PictureHeight:=JpgImage.Height; end else end; procedure TMainForm.choosebtClick(Sender: TObject); Begin If (filelistbox1.FileName='') Then {判断Filelistbox1中文件有没有被选中} showmessage('请选择一张图片') Else Image1.Picture.LoadFromFile(Filelistbox1.FileName);{加载图片文件并显示} End; end.