想在DBGrid展示的查询结果加一列Checkbox用于让用户“选中”或“取消选中”,怎么样才能实现?
想在DBGrid展示的查询结果加一列Checkbox用于让用户“选中”或“取消选中”,以便下一步操作,不知要怎么实现?
[解决办法]
建议改用ListView或者其他的第三方Grid控件,如cxGrid,AdvStringGrid等
[解决办法]
你参考一下这个贴,可能帮到你!
http://bbs.csdn.net/topics/20156751
[解决办法]
我刚才试了,用重绘的方法可以加到checkbox列,但无法直接编辑,要做一些处理,在刚才的贴里5楼有相关示例,再是用改用其他控件或者第三方控件了
[解决办法]
用infopower组件可以很方便的达到你的要求
[解决办法]
标准的DBGrid完全可以实现这个功能,代码如下
procedure TfrmAddOldCustPrdt.GGPDBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
inherited;
if (Field.Name='CDS1Flag') then
begin
with Sender as TGGPDBGrid do
begin
Canvas.Brush.Color:=clWindow;
Canvas.FillRect(Rect);
end;
if GGPDBGrid1.DataSource.DataSet.FieldByName('Flag').AsString='Y' then
DrawFrameControl(GGPDBGrid1.Canvas.Handle,Rect,DFC_BUTTON,DFCS_CHECKED )
else
DrawFrameControl(GGPDBGrid1.Canvas.Handle,Rect,DFC_BUTTON,DFCS_BUTTONCHECK);
end;
end;
procedure TfrmAddOldCustPrdt.GGPDBGrid1CellClick(Column: TColumn);
begin
inherited;
if CDS1.IsEmpty or (not CDS1.Active) then Exit;
if (Column.FieldName='Flag') then
begin
GGPDBGrid1.Options:=GGPDBGrid1.Options-[dgEditing];
if CDS1.FieldByName('Flag').AsString='Y' then
begin
CDS1.edit;
CDS1.FieldByName('Flag').AsString:='N';
CDS1.Post;
end else
begin
CDS1.edit;
CDS1.FieldByName('Flag').AsString:='Y';
CDS1.Post;
end;
end
else
begin
GGPDBGrid1.Options:=GGPDBGrid1.Options+[dgEditing];
end;
end;