标题菜鸟捉虫(39)
栏目软件世界
发布2001年39期
上期正确答案:
该程序当中存在三个错误:第一,没有加入stdctrls单元,根本无法创建Button控件;第二,没有指定所创建的按钮要显示的地方,即没有指定要容纳所创建控件的容器,因此无法显示出按钮来,只要在创建循环中加入“vBtn[i].ParentWindow:=Handle;”即可显示;第三,在判断哪个按钮被单击时的语句中,不能使用“:=”,这是赋值符号,不能用作比较,应该使用“=”符号。
获奖名单:
云南 向 彬 辽宁 陈晓渝 四川 周 杰
安徽 胡永进 北京 曾 成
以上幸运读者将获得电脑报最新出品的《电脑报系列配套光盘》杂志一套。
本期题目:
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;