Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка св-во типа TStringList


nza ©   (2010-12-24 18:20:00) 

Пытаюсь сделать у компонента свойство типа TStringList.
пытаюсь ввести строки в Object inspector, ввожу
после ввода выскакивает ошибка. Помогите разобраться.
делаю так:


private
...
   FFixedCaption :TStringList;
   function GetFixedCaption: TStringList;
   procedure SetFixedCaption(const Value: TStringList);
...
published
...
property FixedCaptions: TStringList read GetFixedCaption write SetFixedCaption;
...
implementation
...
constructor TButtonGrid.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FFixedCaption:=TStringList.Create;
...

procedure TButtonGrid.SetFixedCaption(const Value: TStringList);
var i:integer;
begin
  if  not assigned(value) then exit;
  FFixedCaption:=value;
  for i:=0 to value.Count-1 do   FGrid.Cells[i,0]:=value[i];
end;

function TButtonGrid.GetFixedCaption: TStringList;
begin
 Result:=FFixedCaption;
end;

FGrid - это TStinggrid


Германн   (2010-12-26 03:03:00) [1]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1293131507&n=18


Юрий Зотов   (2010-12-26 01:10:00) [2]

Ю>nza   (25.12.10 06:49) [7]
>Повторил ваш код в точности,
>данные из введенные в object inspector при запуске все рано пропадают

Значит, не  в точности. Настаиваю на своем- повторите в ТОЧНОСТИ.


nza   (2010-12-26 00:15:00) [3]


> Дмитрий С ©   (25.12.10 17:43) [11]


ннт цикл был в SetFixedCaption


Дмитрий С   (2010-12-25 17:43:00) [4]


> nza   (25.12.10 13:26) [9]

а до этого цикл в конструкторе create был?


_Юрий   (2010-12-25 14:33:00) [5]


> данные из введенные в object inspector при запуске все рано
> пропадают


Откройте DFM (формы, на которой лежит компонент) как текст и посмотрите, есть ли там эти данные.
Если нету - то надо разбираться со стримингом. Если есть - то косяк  в другом месте


nza   (2010-12-25 13:26:00) [6]

Поставил цикл заполнение ячеек в CreareWnd, работает.
Правильно ли это?


Ega23   (2010-12-25 09:58:00) [7]

Я точно не уверен, компоненты давно с нуля не писал, но по-моему тебе либо свойство в published как TStrings объявить, либо Read-WriteComponent переопределить. Возможно оба вместе.


nza   (2010-12-25 06:49:00) [8]

Повторил ваш код в точности,
данные из введенные в object inspector при запуске все рано пропадают


Юрий Зотов   (2010-12-24 20:23:00) [9]


private
 FFixedCaption: TStrings;
 procedure SetFixedCaption(const Value: TStrings);
public
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
published
 property FixedCaptions: TStrings read FFixedCaption write SetFixedCaption;

// ==================

constructor TButtonGrid.Create(AOwner: TComponent);
begin
 inherited;
 FFixedCaption := TStringList.Create
end;

destructor TButtonGrid.Destroy;
begin
 FFixedCaption.Free;
 inherited
end;

procedure TButtonGrid.SetFixedCaption(const Value: TStrings);
begin
 FFixedCaption.Assign(Value)
end;


Повторите этот код ТОЧНО - и не будет никаких проблем.


Игорь Шевченко   (2010-12-24 20:11:00) [10]


> ошибка памяти


склероз ?


nza   (2010-12-24 19:10:00) [11]

написал так:

procedure TButtonGrid.SetFixedCaption(const Value: TStringList);
var i:integer;
begin

FFixedCaption.Assign(Value);
...


ошибка пропала, но теперь введенные данные видны в конструкторе,
а при запуске приложения пропадают.


MBo   (2010-12-24 19:05:00) [12]

Вот здесь:
FFixedCaption:=value;
Assign происходит или нет?

И еще  - я не помню, можно ли published свойство типа TStringList делать?


nza   (2010-12-24 18:47:00) [13]

ошибка памяти


Игорь Шевченко   (2010-12-24 18:44:00) [14]


> после ввода выскакивает ошибка


Секретная ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо