最终自己解决了,散分了
if self.DBGridEh1.Selection.SelectionType=gstRectangle then
self.DBGridEh1.DataSource.DataSet.Bookmark:=dbgridEh1.Selection.Rect.TopRow;
while not self.ADOQuery1.Eof do
begin
if DBGridEh1.DataSource.Dataset.CompareBookmarks(TBookmark(DBGridEh1.Selection.Rect.BottomRow),
TBookmark(DBGridEh1.DataSource.DataSet.Bookmark)) = 0 then Break;
showMessage(self.ADOQuery1.FieldByName('a0188').Asstring);
self.ADOQuery1.Next;
end;