菜鸟捉虫(39)

上期正确答案:
   该程序当中存在三个错误:第一,没有加入stdctrls单元,根本无法创建Button控件;第二,没有指定所创建的按钮要显示的地方,即没有指定要容纳所创建控件的容器,因此无法显示出按钮来,只要在创建循环中加入“vBtn[i].ParentWindow:=Handle;”即可显示;第三,在判断哪个按钮被单击时的语句中,不能使用“:=”,这是赋值符号,不能用作比较,应该使用“=”符号。
   获奖名单:
   云南 向 彬 辽宁 陈晓渝 四川 周 杰
   安徽 胡永进 北京 曾 成
   以上幸运读者将获得电脑报最新出品的《电脑报系列配套光盘》杂志一套。
  #1 本期题目:
   JPG是一种应用很广泛的压缩图像文件格式,如果我们想把JPG文件设置为墙纸,首先得要转换成BMP格式才行。下面这代码就是用于将JPG转换成BMP,然后再设置为墙纸,但它有错误,请找出。
   uses
   ... Registry ...;
   ...
   private
   function ChangeWallPaper(PaperName:String):Boolean;

...
   implementation
   {$R *.DFM}
   function TForm1.ChangeWallPaper(PaperName:String):Boolean;
   var
   wall:TRegistry;
   wallbmp:TBitMap;
   WallJpg:TJpegImage;
   begin
   WallJpg:=TJpegImage.Create;
   WallJpg.LoadFromFile(PaperName);
   WallBmp:=TBitmap.Create;
   WallBmp.Assign(WallJpg);
   WallBmp.SaveToFile('c:\windows\mypaper.bmp');
   Wallbmp.Free;

WallJpg.Free;

Wall:=TRegistry.Create;
   Wall.RootKey:=hkey_current_user;
   Wall.OpenKey('Control Panel\Desktop',false);

Wall.WriteString('TitleWallPaper','0');
   Wall.WriteString('WallPaper','c:\windows\mypaper.bmp');

Wall.CloseKey;
   Wall.Free;
   SystemParametersinfo(spi_setdeskwallpaper,0,nil,spif_sendchange);
   end;
   procedure TForm1.Button1Click(Sender:TObject);
   begin
   IF ChangeWallPaper('C:\mypaper.jpg')THEN Showmessage('墙纸更换成功!');
   end;