Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TStrings как свойство объекта 
V
    Опции темы
~FoX~
Дата 14.9.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



возникла надобность состряпать грид с возможностью задавать заголовки в дизайн тайме...
Собственно в дизайн тайме все нормально работает, т.е. свойство в инспекторе появляется, в него можно заколотить список заголовков и они даже корректно появляются (куда они денутся))))). 
А вот при запуске приложения все заголовки чистые...
Если вынести 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.



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
pseud
Дата 14.9.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(~FoX~ @  14.9.2010,  09:38 Найти цитируемый пост)
Ткните носом в кривизну рук )))))

при запуске приложения твои строки уже хранятся в FCaptionList и событие SetCaptionList не происходит

Добавлено через 5 минут и 40 секунд
может так (пальцем в небо)...
Код

type
  TStringGridCaption = class(TStringGrid) //понаследовали
  .........
  protected
    procedure Paint; override;
  .........

procedure TStringGridCaption.Paint;
begin
  if not FColumnsIsAssigned then
  begin
    Rows[0].Assign(FCaptionList); //установили заголовки столбцов
    FColumnsIsAssigned := True;
  end;

  inherited;
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
~FoX~
Дата 14.9.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(pseud @  14.9.2010,  11:17 Найти цитируемый пост)
при запуске приложения твои строки уже хранятся в FCaptionList и событие SetCaptionList не происходит

Вот до этого я допер )))) Только пытался использовать OnDrawCell плачевно получилось ))))


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.