Пример. Сортировка записей

   
На этом шаге мы рассмотрим пример приложения, иллюстрирующего сортировку записей.

   
Приложение представлено на рисунке 1:


Рис. 1. Приложение в работе

   
Приложение позволяет выбирать тип сортировки: по-возрастанию или по-убыванию. Для этого используется
компонент RadioGroup1:

   procedure TForm1.RadioGroup1Click(Sender: TObject);
   Begin
     if RadioGroup1.ItemIndex=1
     then Vid:='DESC,'
     else Vid:='ASC,';
   End;

   
Обработчик события OnTitleClick компонента DBGrid1 позволяет осуществлять сортировку
записей при щелчке на заголовке столбца сетки DBGrid1.

   procedure TForm1.DBGrid1TitleClick(Column: TColumn);
   Begin
     Datamodule1.ADOTable1.IndexFieldNames := Column.Field.FieldName+' '+Vid;
   End;

   
Замечание.
Все невизуальные компоненты данного приложения (ADOTable1, ADOConnection1 и т. д.) расположены
в модуле данных. Модуль данных удобно использовать для того, чтобы не нагружать окно главной формы лишними
компонентами, к тому же модуль данных можно использовать в нескольких приложениях. Создать модуль данных можно
сделующим образом: File | New | Others. В результате откроется окно хранилища объектов, где нужно дважды щелкнуть
на значке Data Module. Не забудьте связать модуль данных со своим проектом.

   
Приложение содержит два списка ListBox1 и ListBox2. В первом списке содержатся все поля, по которым
можно осуществлять сортировку записей. Выбрав в списке полей необходимое поле его можно поместить в
список полей сортировки с помощью кнопки SpeedButton1 (стрелка вправо).
С помощью кнопок SpeedButton2 (стрелка вверх) и SpeedButton3 (стрелка вниз) можно менять
положения строк в списке полей сортировки.

   
Кнопка Сортировать позволяет отсортировать данные в соответствии со списком полей сортировки
и типом сортировки (по возрастанию или по убыванию). Обработчик этого события имеет следующий вид:

   procedure TForm1.Button2Click(Sender: TObject);
   var
      i : Byte;
      Help : String;      
   Begin
     if (ListBox2.items.Count=0)
     then MessageDlg('Список полей сортировки пуст!',mtInformation,[mbOK],0)
     //Если список полей сортировки пуст, то выводим соответствующее сообщение
     else
        Begin
          for i:=0 to  ListBox2.items.Count-1 do
            Begin
             if ListBox2.items[i]='Фамилия' then Help:='Fam '
             else
               if ListBox2.items[i]='Имя' then Help:='Name '
               else
                 if ListBox2.items[i]='Команда' then Help:='TeamName '
                 else
                   if ListBox2.items[i]='Номер' then Help:='Nomer '
                   else
                     if ListBox2.items[i]='Позиция' then Help:='Position '
                     else
                       Help:='Strana ';
             Str:=Str+Help+Vid; //Формируем строку Str из списка полей сортировки
            End;       
          Str[Length(str)]:=' ';
          DataModule1.ADOTable1.Sort:=Str; 
          //Формируем свойство Sort компонента ADOTable1
          Str:=''; //Очищаем строку
        End;
   End;

   
Полный текст этого приложения можно взять здесь.
Файлы базы данных, используемой в приложении можно взять здесь.

   
На следующем шаге мы рассмотрим пример приложения, иллюстрирующего фильтрацию записей.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий