L
lingmao3
Unregistered / Unconfirmed
GUEST, unregistred user!
我点击dbgrid1时,如果名称1相同就被选中,否则还是原样,
现在出现一个奇怪的问题:如果最后一条记录也满足条件,它却不会被选中.
但是如果在procedure中任何一个位置加上showmessage().它又正常了,所有满足条件的记录都会被选中.
procedure Tformitemsall.dbgrid1ColEnter(Sender: TObject);
var i:integer;
vstring,vvstring:string;
begin
//aaaaaaaaaaaa
vstring:=trim(DBGrid1.DataSource.Dataset.FieldValues['项目名称']);
if (DBGrid1.SelectedRows.CurrentRowSelected=false) and (DBGrid1.DataSource.Dataset.FieldValues['名称1']=DBGrid1.DataSource.Dataset.FieldValues['项目名称']) then
begin
//2
//showmessage('');加上就正常,不加上就不正常.
DBGrid1.DataSource.DataSet.first;
while not DBGrid1.DataSource.Dataset.eofdo
begin
//1
if trim(DBGrid1.DataSource.Dataset.FieldValues['名称1'])=vstring then
begin
DBGrid1.SelectedRows.CurrentRowSelected:=true;
end;
DBGrid1.DataSource.DataSet.Next;
end;
//1
end;
//2
end;
//aaaaaaaaaaaaaa
=======================================
问题已解决:就是增加一行代码:.
Application.ProcessMessages;
//这行非常重要
现在出现一个奇怪的问题:如果最后一条记录也满足条件,它却不会被选中.
但是如果在procedure中任何一个位置加上showmessage().它又正常了,所有满足条件的记录都会被选中.
procedure Tformitemsall.dbgrid1ColEnter(Sender: TObject);
var i:integer;
vstring,vvstring:string;
begin
//aaaaaaaaaaaa
vstring:=trim(DBGrid1.DataSource.Dataset.FieldValues['项目名称']);
if (DBGrid1.SelectedRows.CurrentRowSelected=false) and (DBGrid1.DataSource.Dataset.FieldValues['名称1']=DBGrid1.DataSource.Dataset.FieldValues['项目名称']) then
begin
//2
//showmessage('');加上就正常,不加上就不正常.
DBGrid1.DataSource.DataSet.first;
while not DBGrid1.DataSource.Dataset.eofdo
begin
//1
if trim(DBGrid1.DataSource.Dataset.FieldValues['名称1'])=vstring then
begin
DBGrid1.SelectedRows.CurrentRowSelected:=true;
end;
DBGrid1.DataSource.DataSet.Next;
end;
//1
end;
//2
end;
//aaaaaaaaaaaaaa
=======================================
问题已解决:就是增加一行代码:.
Application.ProcessMessages;
//这行非常重要