stringgrid闪烁! (50分)

  • 主题发起人 主题发起人 江西的delphi
  • 开始时间 开始时间
谢谢,我回去试试!
 
to:redsky.l,
不行,我用stringgrid(不是AligridString)自定义draw过程(过程如下),但当
strigngrid上面 的showmodual窗体移动时,
stringgrid.OnDrawCell事件触发,stringrid又变成空白,
如果设defaultdraw:=false,则showmodual窗体移动时,会把移到的cell数据清除。
还请指教!


过程如下:with StringGrid do
begin
for iCol:=1 to ColCount do
for iRow:=1 to RowCount do
begin
if ADOQryHouse.Locate('sHouseID',(FormatFloat('00',iCol)+FormatFloat('00',iRow)),[]) then
begin
if Trim(ADOQryHouse.FieldByName('sSellState').AsString)='预定' then Canvas.Brush.Color := clFuchsia;
if (Trim(ADOQryHouse.FieldByName('sSellState').AsString)='已售') or (Trim(ADOQryHouse.FieldByName('sSellState').AsString)='已签') then Canvas.Brush.Color := clRed;
if Trim(ADOQryHouse.FieldByName('sSellState').AsString)='未售' then Canvas.Brush.Color := clWindow;
if ADOQryHouse.FieldByName('bRetainState').AsBoolean then Canvas.Brush.Color := clLime;
Canvas.FillRect(CellRect(iCol,iRow));
Canvas.TextOut(CellRect(iCol,iRow).Left + 2, CellRect(iCol,iRow).Top + 2, ADOQryHouse.FieldByName('sHouseID').AsString);
end;
end;
end;
 
to:redsky.l,
谢谢,刚刚我又换了AligridStringgrid,用了属性ColorCell[SelectCol,SelectRow]:= 你要的颜色;
正常!有几个不明白的地方,我想再请教一下,stringgrid的Canvas是不是会触发stringgrid.OnDrawCell事件,
而AligridString可以通过手工设置ColorCell(象cell[col,row}填内容一样)不必canvas所以
不会触发AligridStringgrid.OnDrawCell,所以这就是AligridStringgrid的高明之处。
有空联系,我有个同学,家在海口。
 
我只发现Grid的Cells 是Grid里面包含的一个类,stringgrid的Cells是一个相当简单的类,
好象是从TEdit上面下来的。并且每次重画表格时(比如:窗体重画,表格滚动条移动),都会
对每一个表格重置,画在Cells的Canvas上的东东就没了。如果是画在表格上的Canvas,它不
会跟着滚动条滚动……总之。 stringgrid不好用。

很多第三方控件就是对Cells进行改造。至于如何改造,还没有深究。
 
to:redsky.l,
谢谢,过二天就结束问题!
 
结束!
还是用AligridStringgrid,分不多每人拿点吧!
 
多人接受答案了。
 
后退
顶部