Советы пользователям Delphi и C++Builder


         

Как произвести сортировку данных в компоненте TClientDataSet


Для сортировки данных в компоненте TClientDataSet можно использовать свойство IndexFieldNames (точно так же, как и в случае использования компонента TTable). Помимо этого, компонент TClientDataSet обладает методами AddIndex и DeleteIndex. Эти методы позволяют произвести сортировку данных на этапе выполнения.

На форму приложения, содержащую данные из компонента TClientDataSet, добавим компонент TListBox и создадим два обработчика события:

void __fastcall TForm1::FormCreate(TObject *Sender) { ListBox1->Items=ClientDataSet1->FieldList; } //------------------------------------------------------------ void __fastcall TForm1::ListBox1Click(TObject *Sender) { AnsiString fn=ListBox1->Items->Strings[ListBox1->ItemIndex]; TIndexOptions opts; opts << ixCaseInsensitive; ClientDataSet1->AddIndex(fn + "Index", fn , opts, "", "",0); ClientDataSet1->IndexName = fn + "Index"; Edit1->Text=fn; }

Соответствующий код для Delphi имеет вид:

procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items:=ClientDataSet1.FieldList; end; procedure TForm1.ListBox1Click(Sender: TObject); var fn:string ; begin fn:= ListBox1.Items.Strings[ListBox1.ItemIndex]; ClientDataSet1.AddIndex(fn + 'Index', fn, [ixCaseInsensitive],'','',0); ClientDataSet1.IndexName := fn + 'Index'; end;

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



Содержание раздела