Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
ВнизСкачок записей в DbGridEh при использование Bookmark Найти похожие ветки
← →
sergeyleroy (2013-01-17 11:59) [0]День добрый. Помогите пожалуйста.
Имеется следующий код:function TGrafikLP.vcf_podschetSymmu(DataS: TADOQuery;
Grid: TDBGridEH): string;
var
SavePlace:TbookMark;
sum: double;
i, kolznach: integer;
Begin
DataS.DisableControls;
try
SavePlace:= DataS.GetBookmark;
sum:= 0.0;
kolznach:=0;
case Grid.Selection.SelectionType of
gstRectangle:
begin
DataS.Bookmark:= Grid.Selection.Rect.TopRow;
while true do begin
for i:= Grid.Selection.Rect.LeftCol to Grid.Selection.Rect.RightCol do begin
if not DataS.Fields[i].IsNull then
case DataS.Fields[i].DataType of
ftSmallint, ftInteger, ftWord, ftFloat,
ftCurrency, ftLargeint, ftBCD :
Begin
sum:=sum+DataS.Fields[i].AsFloat;
kolznach:=kolznach+1;
end;
end; //case
end;
if Grid.Selection.Rect.BottomRow = DataS.Bookmark then break;
DataS.Next;
end; // while
end;
end;//case
finally
DataS.GotoBookmark(SavePlace);
DataS.FreeBookmark(SavePlace);
sum:=RoundTo(sum,-2);
end; //try
DataS.EnableControls;
Result:="Количество: " +FloatToStr(kolznach)+" Сумма: "+ FloatToStrF(sum,ffNumber,10,2);
end;
Данный код выполняет суммирование данных в выделенных ячейках DbGridEH (3.6). Всё бы хорошо, Но когда выбираешь запись (диапазон) внизу или вверху таблицы - запись скачет к центру.
Скачок происходит при следующей выполнении кода:... DataS.Bookmark:= Grid.Selection.Rect.TopRow;
...
DataS.GotoBookmark(SavePlace);...
Можно ли как нибудь решить проблему со скачком?
← →
sergeyleroy (2013-01-17 12:34) [1]Спустя несколько дней решилось!!:)))
function TGrafikLP.vcf_podschetSymmu(DataS: TADOQuery;
Grid: TDBGridEH): string;
var
SavePlace:TbookMark;
sum: double;
i, kolznach: integer;
n: byte;
Begin
DataS.DisableControls;
try
Grid.SaveBookmark;
n:=0;
sum:= 0.0;
kolznach:=0;
case Grid.Selection.SelectionType of
gstRectangle:
begin
If DataS.Bookmark= Grid.Selection.Rect.BottomRow then
n:=1;
while true do begin
for i:= Grid.Selection.Rect.LeftCol to Grid.Selection.Rect.RightCol do begin
if not DataS.Fields[i].IsNull then
case DataS.Fields[i].DataType of
ftSmallint, ftInteger, ftWord, ftFloat,
ftCurrency, ftLargeint, ftBCD :
Begin
sum:=sum+DataS.Fields[i].AsFloat;
kolznach:=kolznach+1;
end;
end; //case
end;
if ((Grid.Selection.Rect.BottomRow = DataS.Bookmark) and (n<>1)) or ((n=1) and (Grid.Selection.Rect.TopRow = DataS.Bookmark)) then break;
If (n=1) then
DataS.Prior
else
DataS.Next;
end; // while
end;
end;//case
finally
Grid.RestoreBookmark;
sum:=RoundTo(sum,-2);
end; //try
DataS.EnableControls;
Result:="Количество: " +FloatToStr(kolznach)+" Сумма: "+ FloatToStrF(sum,ffNumber,10,2);
end;
← →
sniknik © (2013-01-17 12:40) [2]> sergeyleroy (17.01.13 11:59)
> sergeyleroy (17.01.13 12:34) [1]
> Спустя несколько дней решилось!!:)))
одолжи машину времени... очень надо!
← →
sergeyleroy (2013-01-17 12:48) [3]Долго думал, а только задал вопрос, сразу нашёлся ответ:)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c