cxGrid两个知识点:保持设计时的列宽和隔行着色

来源:互联网 发布:淘宝男装网红店 编辑:程序博客网 时间:2024/06/04 23:31

1、保持合适的列宽且充满整个区域

cxgrid默认情况下,列有一个属性MinWidth,这个属性默认情况下是20,把它改为0。然后把cxgridview的columnAutoWidth设置为true。这样列宽就会在充满整个区域的基础上,根据设计时候的长度进行微调。再也不会在dataset open之后胡乱变换长度了。

2、隔行换色

不能在gridDrawCell事件下写类似于这种的着色代码:

  {if   AViewInfo.RecordViewInfo.Index   mod   2   =   0   then
  begin
    ACanvas.Canvas.Brush.Color   := rgb(252,240,235);
    ACanvas.Font.Color := clblack;
  end
  else
  begin
    ACanvas.Canvas.Brush.Color:=clWhite;
    ACanvas.Font.Color := clblack;
  end;


if AViewInfo.Selected then
  begin
    ACanvas.Canvas.Brush.Color := clmenuhighlight;
    ACanvas.Font.Color := clwhite;
  end; }

这样的着色是有毛病的,如果记录数超过一屏,用鼠标往下拉的时候你就会发现不是隔一行着色,而是一个色。因为gridDrawCell只能处理视觉以内的部分。

cxgridview有三个style可以很方便的设置,不用任何代码,这三个style是:

ContentEven(偶数行style)、ContentOdd(奇数行style)、selection(选中行style)。这三个style可以设置出完美的隔行着色效果。