我想多选cxGrid的记录:我把OptionsSelection的MultiSelect设置为True后,多选的记录我怎么知道我是选择了那几条啊,
例:我在DbGrid中可以这样的知道我所选择的记录:
for Int_i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
query1.GotoBook(Tbook(DBGrid1.SelectedRows.Items[Int_i]));
Pub_RowValue.Add(query1.fieldbyname(Pub_ResultColumn).AsString);
end;
例:我在DbGrid中可以这样的知道我所选择的记录:
for Int_i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
query1.GotoBook(Tbook(DBGrid1.SelectedRows.Items[Int_i]));
Pub_RowValue.Add(query1.fieldbyname(Pub_ResultColumn).AsString);
end;
解决方案 »
- delphi chart控件有的机器上能显示 但在有的机器上就不能显示
- delphi ComboBox 只读 text
- 控件能作为函数参数吗?
- 如何获得对象的公布属性列表
- 程序后台工作的问题
- Delphi8的转变之个人感觉!!!!!!!!!!!!!!!!!!1
- 救命呀,我做的程序为什么总出现为指定错误呀,==========-------再线等待
- 打印,采用的是delphi自己的控件,report,可是,打出来的效果,不是理想
- 一个关于dll的例子,运行不了,请帮忙看一下。
- 各位高手,我在程序中有这样一需求:如果前面的100行代码没触发异常,则继续执行。我能否知道前100行是否触发异常了呢?
- 高手进。。
- QuickReport中的 TQRRichText打印返回出现致命错误的问题
var
i, j, k: Integer;
sendState, sendMainid,scount, GoodsName, goodsType, phone, ask, getPosition, GetAddr, GEt, pay, Minuteid: string;
begin MinuteId := Cdsmain.fieldbyname('sendMinuteID').asstring;
sendSTate := Cdsmain.fieldbyname('sendState').asstring;
for k := 1 to tsgrid1.Rows do
begin
if (trim(tsgrid1.Cell[tsgrid1.Col['sendMinuteId'].id, k]) = minuteID) or (SendState = '02') then
begin
msg('此记录已添加');
exit;
end;
end; //////////////////////取值
j := tsgrid1.Rows + 1;
tsgrid1.rows := j;
sendMainid := Cdsmain.fieldbyname('sendMainID').asstring;
GoodsName := Cdsmain.fieldbyname('clientname').asstring;
GoodsType := Cdsmain.fieldbyname('GoodsType').asstring;
Phone := Cdsmain.fieldbyname('clientFixtel').asstring;
Ask := Cdsmain.fieldbyname('clientAsk').asstring;
GetPosition := Cdsmain.fieldbyname('GetPosition').asstring;
GEtaddr := Cdsmain.fieldbyname('GetAddr').asstring;
Get := Cdsmain.fieldbyname('ShouldGet').asstring;
pay := Cdsmain.fieldbyname('ShouldPay').asstring;
MInuteid := Cdsmain.fieldbyname('sendMinuteID').asstring;
scount := Cdsmain.fieldbyname('goodscount').asstring;
cdsmain.Delete;
for i := j to count do //////////往TsGrid里面赋值
begin
////////
////////////
tsgrid1.Cell[tsgrid1.Col['sendMainId'].id, i] := SendMainid;
tsgrid1.Cell[tsgrid1.Col['clientname'].id, i] := GoodsName;
tsgrid1.Cell[tsgrid1.Col['clientFixtel'].id, i] := Phone;
tsgrid1.Cell[tsgrid1.Col['clientask'].id, i] := Ask;
tsgrid1.Cell[tsgrid1.Col['GetPosition'].id, i] := Getposition;
tsgrid1.Cell[tsgrid1.Col['GetAddr'].id, i] := GetAddr;
tsgrid1.Cell[tsgrid1.Col['ShouldGet'].id, i] := Get;
tsgrid1.Cell[tsgrid1.Col['ShouldPay'].id, i] := pay;
tsgrid1.Cell[tsgrid1.Col['SendMinuteId'].id, i] := Minuteid;
tsgrid1.Cell[tsgrid1.Col['GoodsCount'].id, i] := Scount;
end;
end;我没有用goto,嘿嘿,自己些吧
var
i, n: integer;
a: TcxCustomGridRecord;
begin
n := cxGrid1DBTableView1.DataController.Controller.SelectedRecordCount;
if n > 0 then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('if OBJECT_ID(''tempdb..#Test'') is not null drop table #Test ' +
'Create table #Test (name char(20) not null,Capital char(20) not null)');
ADOQuery1.ExecSQL;
for i := 1 to n do
begin
a := cxGrid1DBTableView1.DataController.Controller.SelectedRecords[i - 1];
if a.IsData then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert #Test values(:Name, :Capital)');
ADOQuery1.Parameters.ParamByName('Name').Value := a.Values[cxGrid1DBTableView1Name.Index];
ADOQuery1.Parameters.ParamByName('Capital').Value := a.Values[cxGrid1DBTableView1Capital.Index];
ADOQuery1.ExecSQL;
end;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from #Test');
ADOQuery1.Open;
end;
end;
i, n: integer;
a: TcxCustomGridRecord;
begin
n := cxGrid1DBTableView1.DataController.GetSelectedCount;
if n > 0 then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('if OBJECT_ID(''tempdb..#Test'') is not null drop table #Test ' +
'Create table #Test (name char(20) not null,Capital char(20) not null)');
ADOQuery1.ExecSQL;
for i := 0 to n - 1 do
begin
a := cxGrid1DBTableView1.DataController.Controller.SelectedRecords[i];
if a is TcxGridDataRow then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert #Test values(:Name, :Capital)');
ADOTable1.Book := cxGrid1DBTableView1.DataController.GetSelectedBook(i);
ADOQuery1.Parameters.ParamByName('Name').Value := ADOTable1.FieldByName('Name').AsString;
ADOQuery1.Parameters.ParamByName('Capital').Value := ADOTable1.FieldByName('Capital').AsString;
ADOQuery1.ExecSQL;
end;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from #Test');
ADOQuery1.Open;
end;
end;
for Int_i := 0 to Tsgrid1.SelectedRows.Count- 1 do
begin
query1.GotoBook(Tbook(tsgrid1.Cell[tsgrid1.Col['clientFixtel'].id, i]));
Pub_RowValue.Add(query1.fieldbyname(Pub_ResultColumn).AsString);
end;
for Int_i := 0 to DBGrid1.SelectedRows.Count - 1 do
begin
query1.GotoBook(Tbook(DBGrid1.SelectedRows.Items[Int_i]));
end;
这是在DbGrid可以用以上方法移动我选择的记录上,在cxGrid上怎么才能达到一样的效果啊
begin
a := cxGrid1DBTableView1.DataController.Controller.SelectedRecords[i];
if a is TcxGridDataRow then
begin
...
ADOTable1.Book := cxGrid1DBTableView1.DataController.GetSelectedBook(i);
//这不就是把ADOTable1定位到选中的第i条记录吗?
//use ADOTable1.FieldByName('***').AsString;
end;
end;