Это улучшает гибкость. Изменения указаны наклонным курсивом.
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; |