Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

Скачок записей в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1366626747
DevilDevil
2013-04-22 14:32
2013.10.06
Относитесь ли вы к своей профессии, как к творчеству? (Опрос)


2-1357874385
Ghost del vonte
2013-01-11 07:19
2013.10.06
SFX


2-1358365235
lordalexander
2013-01-16 23:40
2013.10.06
не могу понять почему ошибка


15-1365965231
ProgRAMmer Dimonych
2013-04-14 22:47
2013.10.06
Парсинг PHP-кода


15-1366378587
Книжколюб
2013-04-19 17:36
2013.10.06
Кто-нибудь пользуется электронными книгами на базе E-Ink ?