1、Delphi7安装了,现在安装Delphi6,按照步骤一步步到install时,一点就跳到finish,什么原因?是因为装了高版本的D7吗?如果是,怎么样在不删除D7的情况下安装D6?(20 分)2、我自己编写的一个控件,代码模型如下: { 缩略图像类 }
TSmallImage=Class(TCustomControl)
protected
procedure Paint;override;
procedure DrawBorder;virtual;
procedure DrawImages(ifStretch:boolean=true);virtual;
procedure ClearControl;virtual;
public
constructor Create(AOwner:TComponent);override;
end;constructor TSmallImage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csOpaque,csFramed];
end;procedure TSmallImage.Paint;
begin
inherited;
DrawControl;
end;procedure TSmallImage.DrawControl(ifStretch:boolean=true);
begin
//擦空
ClearControl;
//绘边
DrawBorder;
//绘图
DrawImages(ifStretch);
end;procedure TSmallImage.ClearControl;
begin
Canvas.Pen.Color := clBlack;
Canvas.Pen.Style := psSolid;
Canvas.Brush.Color := DefaultColor;
Canvas.Brush.Style := bsSolid;
Canvas.Rectangle(ControlRect);
end;procedure TSmallImage.DrawBorder;
var
rect:TRect;
cl:TColor;
begin
if fSelected then
begin
Canvas.Pen.Color := fSelectedColor;
Canvas.Pen.Style := psDot;
end
else
begin
Canvas.Pen.Color := fBorderColor;
Canvas.Pen.Style := psSolid;
end;
cl := Canvas.Pen.Color;
Canvas.Pen.Mode := pmCopy; Canvas.Pen.Width := fBorderWidth;
Canvas.Brush.Color := fDefaultColor;
Canvas.Rectangle(ControlRect); rect := ControlRect;
dec(rect.Left,fBorderWidth);
dec(rect.Top,fBorderWidth);
inc(rect.Bottom,fBorderWidth);
inc(rect.Right,fBorderWidth);
Frame3d(Canvas,Rect,cl,cl,fBorderWidth); rect := ControlRect;
inc(rect.Left,1);
inc(rect.Top,1);
dec(rect.Bottom,1);
dec(rect.Right,1);
Canvas.Pen.Width := 1;
Frame3d(Canvas,Rect,cl,cl,1);
end;procedure TSmallImage.DrawImages(ifStretch:boolean=true);
{
ifStretch:true-是否进行缩放式绘图 false-平铺式绘图
}
var
w,h:integer;
distRect,srcRect:TRect;
begin
case fImageType of
itBitmap:
begin
if ifStretch then
Canvas.StretchDraw(ImageRect,fBmp)
else
begin
w := 0;
while w < ImageRect.Right - ImageRect.Left do
begin
h := 0;
while h < ImageRect.Bottom - ImageRect.Top do
begin
//限制目标绘图区不越界
distRect := Rect(ImageRect.Left+w,ImageRect.Top+h,min(ImageRect.Right,ImageRect.Left+w+fBmp.Width),
min(ImageRect.Bottom,ImageRect.Top+h+fBmp.Height));
//限制源复制区大小
srcRect := rect(0,0,distRect.Right-distRect.Left,distRect.Bottom-distRect.Top);
Canvas.CopyRect(distRect,fBmp.Canvas,srcRect);
inc(h,srcRect.Bottom-srcRect.Top);
end;
inc(w,fBmp.Width);
end;
end; end;
itJpeg:
begin
Canvas.StretchDraw(ImageRect,fJpeg);
end;
end;
end;在主界面启动时动态创建5个小缩略图对象放到左边竖向PanelLeft上,发现一些占内存的操作进行时,PanelLeft被刷新,导致此时会看到5个缩略图依次从上往下画,中间还偶尔出现停顿。很恶心。
怎么解决?? (30分)
TSmallImage=Class(TCustomControl)
protected
procedure Paint;override;
procedure DrawBorder;virtual;
procedure DrawImages(ifStretch:boolean=true);virtual;
procedure ClearControl;virtual;
public
constructor Create(AOwner:TComponent);override;
end;constructor TSmallImage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csOpaque,csFramed];
end;procedure TSmallImage.Paint;
begin
inherited;
DrawControl;
end;procedure TSmallImage.DrawControl(ifStretch:boolean=true);
begin
//擦空
ClearControl;
//绘边
DrawBorder;
//绘图
DrawImages(ifStretch);
end;procedure TSmallImage.ClearControl;
begin
Canvas.Pen.Color := clBlack;
Canvas.Pen.Style := psSolid;
Canvas.Brush.Color := DefaultColor;
Canvas.Brush.Style := bsSolid;
Canvas.Rectangle(ControlRect);
end;procedure TSmallImage.DrawBorder;
var
rect:TRect;
cl:TColor;
begin
if fSelected then
begin
Canvas.Pen.Color := fSelectedColor;
Canvas.Pen.Style := psDot;
end
else
begin
Canvas.Pen.Color := fBorderColor;
Canvas.Pen.Style := psSolid;
end;
cl := Canvas.Pen.Color;
Canvas.Pen.Mode := pmCopy; Canvas.Pen.Width := fBorderWidth;
Canvas.Brush.Color := fDefaultColor;
Canvas.Rectangle(ControlRect); rect := ControlRect;
dec(rect.Left,fBorderWidth);
dec(rect.Top,fBorderWidth);
inc(rect.Bottom,fBorderWidth);
inc(rect.Right,fBorderWidth);
Frame3d(Canvas,Rect,cl,cl,fBorderWidth); rect := ControlRect;
inc(rect.Left,1);
inc(rect.Top,1);
dec(rect.Bottom,1);
dec(rect.Right,1);
Canvas.Pen.Width := 1;
Frame3d(Canvas,Rect,cl,cl,1);
end;procedure TSmallImage.DrawImages(ifStretch:boolean=true);
{
ifStretch:true-是否进行缩放式绘图 false-平铺式绘图
}
var
w,h:integer;
distRect,srcRect:TRect;
begin
case fImageType of
itBitmap:
begin
if ifStretch then
Canvas.StretchDraw(ImageRect,fBmp)
else
begin
w := 0;
while w < ImageRect.Right - ImageRect.Left do
begin
h := 0;
while h < ImageRect.Bottom - ImageRect.Top do
begin
//限制目标绘图区不越界
distRect := Rect(ImageRect.Left+w,ImageRect.Top+h,min(ImageRect.Right,ImageRect.Left+w+fBmp.Width),
min(ImageRect.Bottom,ImageRect.Top+h+fBmp.Height));
//限制源复制区大小
srcRect := rect(0,0,distRect.Right-distRect.Left,distRect.Bottom-distRect.Top);
Canvas.CopyRect(distRect,fBmp.Canvas,srcRect);
inc(h,srcRect.Bottom-srcRect.Top);
end;
inc(w,fBmp.Width);
end;
end; end;
itJpeg:
begin
Canvas.StretchDraw(ImageRect,fJpeg);
end;
end;
end;在主界面启动时动态创建5个小缩略图对象放到左边竖向PanelLeft上,发现一些占内存的操作进行时,PanelLeft被刷新,导致此时会看到5个缩略图依次从上往下画,中间还偶尔出现停顿。很恶心。
怎么解决?? (30分)
不过有点,就是两个绝对不能放在同一个盘里(比如一个装C盘 一个就不能装C盘了)
什么操作??
所以装delphi,也一样,应该先装低版本,再装高版本.我机器上也装了d7和d2005,也是先装d7,再装d2005,倒过来安装,好像不太正常.以前也试过