Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.20;
Скачать: CL | DM;

Вниз

Ошибка св-во типа TStringList   Найти похожие ветки 

 
nza   (2010-12-24 18:20) [0]

Пытаюсь сделать у компонента свойство типа 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-24 18:44) [1]


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


Секретная ?


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

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


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

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

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


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

написал так:

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

FFixedCaption.Assign(Value);
...


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


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


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


склероз ?


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


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;


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


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

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


 
Ega23 ©   (2010-12-25 09:58) [8]

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


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

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


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


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


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


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


> nza   (25.12.10 13:26) [9]

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


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


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


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


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

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

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


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

http://delphimaster.net/view/2-1293131507/



Страницы: 1 вся ветка

Текущий архив: 2011.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
4-1246357819
istok20
2009-06-30 14:30
2011.03.20
запуск процесса из-под сервиса...


2-1293354617
radiokarazinec
2010-12-26 12:10
2011.03.20
поиск максимальных элементов в массиве


2-1293219121
Фродвард
2010-12-24 22:32
2011.03.20
IntToStr -> ExtToStr


15-1291618037
TUser
2010-12-06 09:47
2011.03.20
1994 - год открытия численного интегрирования


15-1291293154
stas
2010-12-02 15:32
2011.03.20
работа с 2-мя мониторами