Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.45 MB
Время: 0.005 c
15-1366370452
Gero
2013-04-19 15:20
2013.10.06
Один codebase под Win, MacOS, iOS. Поделитесь опытом


15-1367129093
Neuro System
2013-04-28 10:04
2013.10.06
Помогите решить академические задачи


15-1366800820
w666w
2013-04-24 14:53
2013.10.06
Подскажите где найти толкового фрилансера?


15-1367181002
Юрий
2013-04-29 00:30
2013.10.06
С днем рождения ! 29 апреля 2013 понедельник


15-1363095630
О-Сознание
2013-03-12 17:40
2013.10.06
Трабла с директивой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский