delphi7 的dbgrid控件 DrawColumnCell事件的 rect参数是什么意思,该怎么处理
delphi7 的dbgrid控件 DrawColumnCell事件的 rect参数是什么意思
我用这个事件想在dbgrid的表格下方显示另一个dbgrid。在网上看到了相关代码里面有用rect这个参数的,但是我用的时候第二个dbgrid总是在表格的下方左右跳个不停。就是每一列下面都出现一次。想不明白。请高手指点指点……
------解决方案--------------------
rect就是单元格的矩形,TRect,左上角坐标,和右下角坐标,相对dbgrid而言。第二个dbgrid总是在表格的下方左右跳个不停”,是因为你对Draw事件不太了解,Draw一般只要窗体或控件重画,就会触发。你要加一定的判断,在什么时候重画,什么时候不重画,跳动问题就解决了。
------解决方案--------------------
example:
我用这个事件想在dbgrid的表格下方显示另一个dbgrid。在网上看到了相关代码里面有用rect这个参数的,但是我用的时候第二个dbgrid总是在表格的下方左右跳个不停。就是每一列下面都出现一次。想不明白。请高手指点指点……
------解决方案--------------------
rect就是单元格的矩形,TRect,左上角坐标,和右下角坐标,相对dbgrid而言。第二个dbgrid总是在表格的下方左右跳个不停”,是因为你对Draw事件不太了解,Draw一般只要窗体或控件重画,就会触发。你要加一定的判断,在什么时候重画,什么时候不重画,跳动问题就解决了。
------解决方案--------------------
example:
- Delphi(Pascal) code
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with TMyDBGrid(Sender) do begin if DataLink.ActiveRecord=Row-1 then begin Canvas.Font.Color:=clWhite; Canvas.Brush.Color:=$00800040; end else begin Canvas.Brush.Color:=Color; Canvas.Font.Color:=Font.Color; end; DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end;