Советы по 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 dobeginwith DBGrid1.Columns.Items[ a - 1 ] dobeginTheFn := FieldName;TheCap := Title.Caption;TheWidth := Width;end;With Headercontrol1.Sections DOBEGINAdd;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; { Пробуем задать имя индекса }exceptHeaderControl1.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]



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