朋友都来看一下!
ehom 2002-07-18 10:52:12 Out of system resources是什么错误!(它出现在我的一段多线程生成目录预览的程序里)]
代码:
procedure ThrdSee.PTem;
begin
if n=1 then Main.ImgList.Clear;
Main.LV_File.Items[n-1].ImageIndex:=Main.ImgList.Add(TBmp,nil);
end;
procedure ThrdSee.Execute;
var
i:integer;
TBmpLeft:integer;
TBmpTop:integer;
TBmpHeight:integer;
TBmpWidth:integer;
OBmp:TBitmap;
TemJPG:TJPEGImage;
TemICO:TIcon;
TemGIF:TGIFImage;
begin
if Main.HavePic then
begin
FreeOnTerminate:=True;
For i:=1 to Main.FileList.Items.Count do
begin
n:=i;
if Terminated then Break;
Synchronize(LShow);
end;
end
else
begin
Main.HavePic:=True;
FreeOnTerminate:=True;
TBmp:=TBitmap.Create;
TBmp.Height:=80;
TBmp.Width:=80;
OBmp:=TBitmap.Create;
For i:=1 to Main.FileList.Items.Count do
begin
if not Main.HavePic then Break;
if Terminated then continue;
n:=i;
try
ImageFileName:=Main.FileList.Items.Strings[i-1];
Main.TemImg.Picture.LoadFromFile(ImgFileName);
if(LowerCase( ExtractFileExt(ImgFileName))='.jpg') or (LowerCase( ExtractFileExt(ImgName))='.jpeg')then
begin
Temjpg:=TJPEGImage.Create;
Temjpg.Assign(Main.TemImg.Picture);
OriginalBmp.Assign(Temjpg);
Temjpg.Free;
Temjpg:=nil;
end
else if (LowerCase( ExtractFileExt(ImageFileName))='.gif')then
begin
TemGIF:=TGifImage.Create;
TemGIF.Assign(Main.TemImg.Picture);
OriginalBmp.Assign(TemGIF);
TemGIF.Free;
TemGIF:=nil;
end
else
begin
OBmp.Assign(Main.TemImg.Picture);
end;
if OBmp.Height>=OriginalBmp.Width then
begin
TBmpWidth:=64*OBmp.Width div OBmp.Height;
TBmpLeft:=(64-TBmpWidth ) div 2;
TBmp.Canvas.Brush.Color :=clBtnFace;
TBmp.Canvas.FillRect(TBmp.Canvas.ClipRect);
TBmp.Canvas.StretchDraw(Rect(8+TBmpLeft,8,8+TBmpLeft+TBmpWidth,71),OBmp);
end
else
begin
TBmpHeight:=64*OBmp.Height div OBmp.Width;
TBmpTop:=(64-TBmpHeight ) div 2;
TBmp.Canvas.Brush.Color :=clBtnFace;
TBmp.Canvas.FillRect(TBmp.Canvas.ClipRect);
TBmp.Canvas.StretchDraw(Rect(8,8+TBmpTop,71,8+TBmpTop+TBmpHeight),OBmp);
end;
Synchronize(PTem);//这里报错
except
continue;
end;
end;
OBmp.Free;
OBmp:=nil;
TBmp.Free;
TBmp:=nil;
end;
end;
帮忙分析一下!谢谢!
当ListView的ViewStyle属性为vsIcon,当ListView Resize后?其中的内容不能跟着变化,于是执行在Resize事件中执行ListView.Arrange(arAlignLeft),但当移动过ListView中的滚动条后再Reszie的话,就会在ListView上部出现空白区,内容整体向下移动!现在只能每次Reszie后从新生成ListView中的内容!有没有更好的办法解决?