现在的情况是这样的DBGRID 设置数据集等参数,直接获得MSSQL上的数据,显示于DBGRID上现在想做的是1.既可以选择一行,又可以对字段进行修改
现在是启用了Selectrow就不能edit,edit为真,就不能Selectrow了,不知道怎么弄2.复制一条记录,粘贴与最末尾3.按Del,删除当前光标所在的数据4.点击DBGRID最左边那个小块的事件是什么?点击处的记录号是几号?如果有些问题DBGRID没法解决,请给个能解决的控件,谢谢。
现在是启用了Selectrow就不能edit,edit为真,就不能Selectrow了,不知道怎么弄2.复制一条记录,粘贴与最末尾3.按Del,删除当前光标所在的数据4.点击DBGRID最左边那个小块的事件是什么?点击处的记录号是几号?如果有些问题DBGRID没法解决,请给个能解决的控件,谢谢。
2、用个adoquery控件,往表里append一条数据,各个字段等于关联DBGRID 的ado控件
3、按Del,关联DBGRID 的ado控件.delete
4、不清楚那个左边的小块,如果是光标列,那没事件吧,有的话我不知道,需要事件自己写一个
建议用CxGrid 它的功能很强大
对于你的问题
1.在options里将Selectrow和Readonly设置为true;
2.功能上就是插入一条数据(Insert into);
3.用关连的ADO直接删除就OK了,它有个方法Delete;
4.最左边那小块 没什么用 你也可以去掉的
数据库连接用SQLDirect吧,和上面那个配合很好!
你要求的功能都能实现!
procedure TSetSystermForm.OperatorsShow; //显示会员规则列表
var
list : Integer;
begin
list := 1;
advstrngrdtestgrid1.ClearNormalCells;
advstrngrdtestgrid1.BeginUpdate; DSQuery := TSDQuery.Create(nil);
DSQuery.DatabaseName := 'timecarddb';
DSQuery.SQL.Clear;
DSQuery.SQL.Add( 'select uid,name,authority,state from operatorstb');
try
DSQuery.Open;
while not DSQuery.eof do
begin
advstrngrdtestgrid1.Cells[0,list] := DSQuery.FieldByName('uid').AsString;
advstrngrdtestgrid1.Cells[1,list] := DSQuery.FieldByName('name').AsString;
advstrngrdtestgrid1.Cells[2,list] := DSQuery.FieldByName('authority').AsString;
if DSQuery.FieldByName('state').AsInteger=1 then
begin
advstrngrdtestgrid1.Cells[3,list] := '可用'
end
else
begin
advstrngrdtestgrid1.Cells[3,list] := '不可用';
end; list := list + 1;
DSQuery.Next;
end;
if list <2 then list := 2;
advstrngrdtestgrid1.RowCount := list;
finally
advstrngrdtestgrid1.EndUpdate;
DSQuery.free;
end;
end;
还是算了,我另外想办法好了,如果有dbgrid可以解决这些问题的代码,请贴一下,谢谢。