Форум: "Начинающим";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];
ВнизОшибка св-во типа 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c