возникла надобность состряпать грид с возможностью задавать заголовки в дизайн тайме... Собственно в дизайн тайме все нормально работает, т.е. свойство в инспекторе появляется, в него можно заколотить список заголовков и они даже корректно появляются (куда они денутся))))). А вот при запуске приложения все заголовки чистые... Если вынести FCaptionList в public и в ран тайме его подергать, то он содержит все что нужно, но заголовки все равно пустые.... Ткните носом в кривизну рук )))))
| Код | unit StringGridCaption;
interface
uses SysUtils, Classes, Controls, Grids, Windows;
type TStringGridCaption = class(TStringGrid) //понаследовали
private { Protected declarations } FCaptionList: TStrings; //структура свойства procedure SetCaptionList(Value: TStrings); //устанавливаем function GetCaptionList: TStrings; //получаем
protected { Protected declarations }
public { Public declarations } constructor Create(AOwner: TComponent); override; //конструктор destructor Destroy; override; //деструктор
published { Published declarations } property CaptionList: TStrings read GetCaptionList write SetCaptionList; //собственно само свойство end;
implementation
constructor TStringGridCaption.Create(AOwner: TComponent); //конструктор begin FCaptionList := TStringList.Create; //создали лист для свойства inherited Create(AOwner);
DefaultRowHeight := 21; //установили дефолтные значения DefaultColWidth := 32; end;
procedure TStringGridCaption.SetCaptionList(Value: TStrings); //устанавливаем капшены столбцов begin FCaptionList.Assign(Value); //просто для примера //.................. Rows[0].Assign(FCaptionList); //установили заголовки столбцов //.................. end;
function TStringGridCaption.GetCaptionList: TStrings; begin Result := FCaptionList; //получили заголовки обратно end;
destructor TStringGridCaption.Destroy; //диструктор begin FCaptionList.Free; //не забываем уничтожать все лишнее inherited; end;
end.
|
|