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分)

解决方案 »

  1.   

    Delphi安装两个要先装D6吧? 不记得了
    不过有点,就是两个绝对不能放在同一个盘里(比如一个装C盘 一个就不能装C盘了)
      

  2.   

    发现一些占内存的操作进行时,PanelLeft被刷新
    什么操作??
      

  3.   

    据我的经验,要先装win98,才能装win2000,才能装2003,
    所以装delphi,也一样,应该先装低版本,再装高版本.我机器上也装了d7和d2005,也是先装d7,再装d2005,倒过来安装,好像不太正常.以前也试过
      

  4.   

    同一盘 不同盘 都试过 都安装不了,一点Install就跳到最后。我D7里安装了很多控件,再安装很麻烦,不想卸。并且D7正在开发一些项目用。
      

  5.   

    第2个问题我采用的是Application.processMessages,就是每当绘图完毕后就向主线程回发控制权,这样基本上是同时的,但还不完美,就是刚开始看到空Panel,然后再同时看到那几个缩略图控件