Советы по Delphi

         

Улучшения


Здесь приведен улучшенный код по сравнению с предыдущей версией "Совета", он заключается в использовании в качестве имени индекса имя поля вместо заголовка.

Это улучшает гибкость. Изменения указаны наклонным курсивом.

    procedure TfrmDoc.FormCreate(Sender: TObject);
Var
TheCap    : String; TheFn     : String; TheWidth  : Integer; a         : Integer; begin
Dbgrid1.Options := DBGrid1.Options - [DGTitles]; Headercontrol1.sections.Add; Headercontrol1.Sections.Items[0].Width := 12;

For a := 1 to DBGRID1.Columns.Count do begin with DBGrid1.Columns.Items[ a - 1 ] do begin TheFn    := FieldName; TheCap   := Title.Caption; TheWidth := Width; end; With Headercontrol1.Sections DO BEGIN Add; Items[a].Text     := TheCap; Items[a].Width    := TheWidth + 1; Items[a].MinWidth := TheWidth + 1; Items[a].MaxWidth := TheWidth + 1; END; (* WITH Headercontrol1.Sections *) try (* except *) { Используем индексы с тем же именем, что и имя поля } (DataSource1.Dataset as TTable).IndexName := TheFn;   { Пробуем задать имя индекса } except HeaderControl1.Sections.Items[a].AllowClick := False; { Индекс недоступен } end; (* EXCEPT *) END; (* FOR *) END; (* PROCEDURE *)

Используйте свойство FieldName компонента DBGrid для задания индекса с тем же именем, что и имя поля.

    procedure TfrmDoc.HeaderControl1SectionClick(HeaderControl: THeaderControl;
Section: THeaderSection); begin
(DataSource1.Dataset as TTable).IndexName := DBGrid1.Columns.Items[ Section.Index - 1 ].FieldName;
end;
[000066]



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