procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Column.Field.FieldName = 'zt' then
begin
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
end;end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
Sql1:String;
begin
if Column.Field.FieldName ='zt' then
begin
with DBGrid1.DataSource.DataSet do
begin
if state<>dsEdit then Edit;
Column.Field.AsBoolean:= Not Column.Field.AsBoolean; if Column.Field.AsBoolean then
FieldByNAME('zt').AsBoolean:=True
ELSE
FieldByNAME('zt').AsBoolean:=False;
end;
end;
end;
Column: TdxDBTreeListColumn);
var
iLoop,I:Integer;
begin
inherited;
if HaveRight(FModuleID,_UserNo,rModify) and (not btnSB_Setup.Enabled) then
begin
if Column.FieldName<>'modulename' then
begin
qry_right.First;
if qry_right.FieldByName(Column.FieldName).AsInteger=0 then
I:=1 else
I:=0;
for iLoop:=0 to Column.ATreeList.Count-1 do
begin
qry_right.Edit;
qry_right.FieldByName(Column.FieldName).AsInteger:=I;
qry_right.Post;
qry_right.Next;
end;
end;
end;
end;
begin
qry_HrYd.First;
if qry_HrYd.FieldByName('YDDCheck').AsBoolean then
begin
C:='0';
btnSB_Search.Caption:='批量全選';
end else
begin
C:='1';
btnSB_Search.Caption:='批量反選';
end;
qry_HrYd.Close;
if (Trim(_KyeYdZJQF)<>'') then
begin
if (Trim(cbb_cb.Text)<>'')or (Trim(cbb_kb.Text)<>'')or (Trim(cbb_zxb.Text)<>'') then
begin
if cbb_cb.Text<>'' then
sWhere:=sWhere+' CB='''+cbb_cb.Text+'''';
if cbb_kb.Text<>'' then
sWhere:=sWhere+' and KB='''+cbb_kb.Text+'''';
if cbb_zxb.Text<>'' then
sWhere:=sWhere+' and XB='''+cbb_zxb.Text+'''';
if cbb_bc.Text<>'' then
sWhere:=sWhere+' and BC='''+cbb_bc.Text+'''';
if cbb_gh.Text<>'' then
sWhere:=sWhere+' and Account_ID='''+cbb_gh.Text+'''';
qry_getoppo.Close;
qry_getoppo.SQL.Text:='Update Res_User_Temp set YDDCheck='''+C+''' where '+sWhere;
qry_getoppo.ExecSQL;
end;
qry_HrYd.Open;
end;
1.
if qry_HrYd.FieldByName('YDDCheck').AsBoolean then //判斷checkbox的狀態,是否勾選
2.
C:='0';//勾選狀態值
btnSB_Search.Caption:='批量全選';
end else
begin
C:='1';//非勾選狀態值
btnSB_Search.Caption:='批量反選';
3.
qry_getoppo.Close;
qry_getoppo.SQL.Text:='Update Res_User_Temp set YDDCheck='''+C+''' where '+sWhere;//更新數據庫中的相關數據,使之同步
qry_getoppo.ExecSQL;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
Sql1:String;
begin
if Column.Field.FieldName ='zt' then
begin
with DBGrid1.DataSource.DataSet do
begin
if state<>dsEdit then Edit;//这里EDIT了,你最后没POST
Column.Field.AsBoolean:= Not Column.Field.AsBoolean; if Column.Field.AsBoolean then
FieldByNAME('zt').AsBoolean:=True
ELSE
FieldByNAME('zt').AsBoolean:=False;
POST;
end;
end;
end;
看样子你DBGRID的数据集是个ADOQUERY控件吧,就让它专门做数据集,执行别的SQL语句不要使用这个ADOQUERY控件了,用别的ADOQUERY控件
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.Field.FieldName ='zt' then
begin
with DBGrid1.DataSource.DataSet do
begin
if state<>dsEdit then
Edit;
Column.Field.AsBoolean:= Not Column.Field.AsBoolean;
Post;
end;
end;
end;
begin
if Column.Field.FieldName ='zt' then
begin
with adoquery1 do
begin
if state<>dsEdit then Edit;
Column.Field.AsBoolean:= Not Column.Field.AsBoolean;
Post;
UpdateBatch;
end;
end;
end;这样就可以了 哇哇 ~~~ 没有UPDATE 今天不看代码啦
樓主與我是“愁人”?如果說當有一批數據時,直接循環判斷這些checkbox有沒有勾選就可以了啊最後還有刷新一下數據庫即可.......