Разработка приложений баз данных в Delphi. Шейкер Т.Д. - 55 стр.

UptoLike

Составители: 

55
выполнить нужные перемещения по таблице;
восстановить значение свойства
RecNo из локальной переменной.
Пример 2.1. Разработать функцию пользователя для вычисления среднего
значения поля. При этом положение указателя в таблице не должно меняться и
данные на экране не должны перерисовываться. Использовать закладку по спо-
собу 1.
function MyBookmark1(Table:TDataSet):Extended;
//Вычисление среднего значения поля Amt_Paid
var B:TBookmark;
begin
Result:=0;
try
B:=Table.GetBookmark; // Установили закладку
Table.DisableControls;
Table.First;
while not Table.Eof do
begin
Result:=Result+Table.FieldValues['Amt_Paid'];
Table.Next;
end;
Result:=Result/Table.RecordCount;
Table.GotoBookmark(B); // Перешли на закладку
Table.FreeBookmark(B);
finally
Table.EnableControls;
end;
end;
В приведённом примере использованы методы DisableControls и En-
ableControls
класса TDataSet, которые применяются для того, чтобы вре-
менно запретить, а затем разрешить вывод записей. Если этого не сделать, то
при программном перемещении по записям каждый раз при вызове метода
Next визуальные компоненты, с которыми связана таблица, будут перерисовы-
ваться. Перерисовка требует существенно больше времени, чем собственно
сканирование, и сопровождается мельканием на экране.
При реализации функции использован блок
try...finally, что позво-
ляет в любом случае восстановить вывод данных на экран.
При вызове функции
MyBookmark1 в параметре Table указывается таб-
лица, которая будет использоваться. Однако поле указано конкретно
(
Amt_Paid), что существенно ограничивает область применения функции.
      – выполнить нужные перемещения по таблице;
      – восстановить значение свойства RecNo из локальной переменной.
     Пример 2.1. Разработать функцию пользователя для вычисления среднего
значения поля. При этом положение указателя в таблице не должно меняться и
данные на экране не должны перерисовываться. Использовать закладку по спо-
собу 1.
function MyBookmark1(Table:TDataSet):Extended;
               //Вычисление среднего значения поля Amt_Paid
var B:TBookmark;
begin
 Result:=0;
 try
  B:=Table.GetBookmark; // Установили закладку
  Table.DisableControls;
  Table.First;
 while not Table.Eof do
  begin
   Result:=Result+Table.FieldValues['Amt_Paid'];
   Table.Next;
  end;
 Result:=Result/Table.RecordCount;
 Table.GotoBookmark(B); // Перешли на закладку
 Table.FreeBookmark(B);
 finally
  Table.EnableControls;
 end;
end;

      В приведённом примере использованы методы DisableControls и En-
ableControls класса TDataSet, которые применяются для того, чтобы вре-
менно запретить, а затем разрешить вывод записей. Если этого не сделать, то
при программном перемещении по записям каждый раз при вызове метода
Next визуальные компоненты, с которыми связана таблица, будут перерисовы-
ваться. Перерисовка требует существенно больше времени, чем собственно
сканирование, и сопровождается мельканием на экране.
      При реализации функции использован блок try...finally, что позво-
ляет в любом случае восстановить вывод данных на экран.
      При вызове функции MyBookmark1 в параметре Table указывается таб-
лица, которая будет использоваться. Однако поле указано конкретно
(Amt_Paid), что существенно ограничивает область применения функции.

                                    55