创建一个LABEL1,使它的PARENT为一个DRAWGRID,并指定它在DRAWGRID中的栅格位置(3,1),但运行后若拉动DRAWGRID的滚动条,出现这样一个现象:这个LABEL1“滚”过的地方留下了LABEL1的痕迹。看上去好象DRAWGRID已无法定位它的栅格,怎样解决此问题?procedure tform1.create();
var
  rect:trect;
  label1:tlabel;
begin
  rect:=drawgrid1.CellRect(3,1);
  label1:=tlabel.create(self);
  label1.Parent:=drawgrid1;
  label1.caption:='aaaa' ;
  label1.left:=rect.Left;
  label1.top:=rect.Top;
end;

解决方案 »

  1.   

    TO 蜡笔小新:你上次的关于DRAWGRID的问题--在DRAWGRID里面写文字,文字会因为DRAWGRID的滚动而被刷掉的问题,你是如何解决的啊。我在DRAWGRID的DRAWCELL里面写如下代码,可是DRAWGRID没有显示的部分(因为DRAWGRID比较大,屏幕显示不了)文字就不出现,滚动后,文字就消失了,或者点击该单元格的时候,文字就消失了。你是如何解决的啊。procedure TF_GameHall.DG_TableDrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    var
      I,J:integer;
    begin
      if ((ACol mod 4) <>0) and (ARow mod 4 <>0) then
      begin
        i:=((ARow mod 4)-1) * 3 + (ACol mod 4) - 1;
        ImageList1.Draw(DG_Table.canvas,Rect.left,rect.top,i);
      end;  if ((ACol mod 4 = 2 ) and (ARow mod 4 = 0)) then
      begin
        J:=(ARow div 4)*3;
        case ACol of
          2 : J:=J + 1;
          6 : J:=J + 2;
          10: J:=J + 3;
        end;//case
        //DG_Table.Canvas.TextOut(ACol*50+20,ARow*50+20,IntToStr(J));
        DG_Table.Canvas.TextRect(Rect,ACol*50+20,ARow*50+20,IntToStr(J));
      end;end;
      

  2.   

    不好意思来晚了。
    你的那段写文字的代码我不是很明白,我随便试了一句
    DG_Table.Canvas.TextOut(rect.Left,rect.Top,IntToStr(J));好像没发生你说的那个问题,不明白你为何直接用行号或列号来进行计算。
    。不过经过这段时间的摸索,发现:只要你把要写或画东西的代码写在DrawCell事件中,不管怎么滚动或变换窗体,程序都会触发这个事件,帮你重绘需要重绘的栅格。