![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка св-во типа 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]
> после ввода выскакивает ошибка
Секретная ?