Главная страница
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.009 c
2-1358420049
Burn
2013-01-17 14:54
2013.10.06
try..except


6-1269649035
defen
2010-03-27 03:17
2013.10.06
демодуляция сигнала с GMSK модуляцией


15-1366917087
О-Сознание
2013-04-25 23:11
2013.10.06
VCL построена на "сигналах-слотах"?


2-1358236774
samborskijj
2013-01-15 11:59
2013.10.06
Неверный запрос (слишком мало параметров)


4-1267109067
davinchi
2010-02-25 17:44
2013.10.06
Отслеживание обращений к файловой системе?