我在DBGridEh中自定义了一列,属性是CheckBoxes,功能是运行时通过Checkboxes的选中和被选中来确定这行记录是否被操作,但是在运行时这列不能被单击。
我首先是在ClientDataSet组件中添加了一个Boolean类型的字段,字段种类为fkCalculated,然后在DBGridEh中引用了这个字段,运行时这列的CheckBoxes默认全被选中,不能单击操作Checkboxes,请问我如何在DBGridEh中实现这个用单选框操作来确定是否处理这行记录的功能呢?
我首先是在ClientDataSet组件中添加了一个Boolean类型的字段,字段种类为fkCalculated,然后在DBGridEh中引用了这个字段,运行时这列的CheckBoxes默认全被选中,不能单击操作Checkboxes,请问我如何在DBGridEh中实现这个用单选框操作来确定是否处理这行记录的功能呢?
只能在oncalculate事件里赋值
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
s: string;
df:UINT;
r: TRect;
const
// 这个整数值将按照布尔值返回,并送入数组
CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK,
DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Query1.fieldbyname('XZ').value='1' then
begin
DBGridEh1.Canvas.Font.Color:=ClRed;
end;
DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state);
if Column.Field.FieldName ='XZ' then
begin
r := Rect;
DrawFrameControl(dbgrideh1.canvas.handle, r, DFC_BUTTON,CtrlState[Boolean(Column.Field.Value)]);
end;
if Column.Field.FieldName ='PZLB' then
begin
s := Column.DisplayText;
case Column.Alignment of
taLeftJustify: df := DT_LEFT;
taCenter: df := DT_CENTER;
taRightJustify: df := DT_RIGHT;
else df := DT_LEFT;
end;
r := Rect;
DrawTextEx(dbgrideh1.canvas.handle,PChar(s),Length(s),r,df,nil);
end;
end;
并将你那个字段的Alignment属性设为taCenter。
你说得那个事件在哪啊?我怎么找不到
顶!!!
这样可以随意操纵checkbox