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

Вниз

Почему сбрасываются свойства в компоненте?   Найти похожие ветки 

 
siriusP   (2004-04-14 16:18) [0]

Есть мой компонент.
Проблема в том, что при изменении свойств в дизайнере все успешно меняется,
а когда запускаю проект все свойства сбрасываются на значения по умолчанию.
Как это победить?


 
TUser ©   (2004-04-14 16:22) [1]

А в конструкторе случайно ничего не прописываешь?


 
siriusP   (2004-04-14 16:26) [2]

Да, прописываю свойства по умолчанию. Тогда как задавать свойства по умолчанию?


 
Ozone ©   (2004-04-14 16:26) [3]

Как тут любят выражаться "... ошибка в 17й строчке" :)


 
siriusP   (2004-04-14 16:29) [4]

Сильно не ругайтесь, я только учусь.


 
TUser ©   (2004-04-14 16:30) [5]

Так, какая разница, чего ты в design-time сдулаешь, если ты потом все равно все в конструкторе поменяешь.

PS. По умолчанию = default


 
Reindeer Moss Eater ©   (2004-04-14 16:33) [6]

Чтение паблишед свойств происходит после конструктора.


 
han_malign ©   (2004-04-14 16:44) [7]

>PS. По умолчанию = default
- в конструкторе, для default published свойств, обязательно нужно инициализировать поля, такими же значениями. Иначе будут глюки с сохранением/чтением DFM файлов...


 
TUser ©   (2004-04-14 16:47) [8]

Кстати да. Чего в конструкторе не пиши - все равно будет default или то, что в инспекторе нарисуешь.


 
siriusP   (2004-04-14 16:51) [9]

Попробовал не получилось.
В моем компоненте есть поле published типа другого класса.
В этом классе прописаны default и на Create инициалицируются такие же значения.
В компоненте в конструкторе создается этот класс,
а старые настройки (которые были в инспекторе) сбрасываются.
Как теперь быть?


 
Юрий Зотов ©   (2004-04-14 16:59) [10]

> siriusP

Просто-напросто настройки не сохраняются в файле формы, никакие конструкторы ни при чем. Похоже, вот это самое "поле published типа другого класса" либо не есть наследник TPersistent, либо содержит нестандартные свойства. Чтобы сказать точнее, нужно видеть код.


 
siriusP   (2004-04-14 17:16) [11]

type
 TSettingsbill = class(TPersistent)
 protected
   FColCount: integer;
   FRowCount: integer;
   ...
 protected
   procedure SetColCount(aColCount: integer);virtual;
   procedure SetRowCount(aRowCount: integer);virtual;
 public
   constructor Create;
   destructor Destroy; override;
 published
   property ColCount: integer read FColCount write SetColCount default 3;
   property RowCount: integer read FRowCount write SetRowCount default 7;
 end;

 Tbill = class(TPanel)
 protected
   FSettingsbill: TSettingsbill;
 ...
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;

 published
   ...
   property Settingsbill: TSettingsbill read FSettingsbill;
 end;

constructor TSettingsbill.Create;
begin
 inherited Create;
 FColCount:= 3;
 FRowCount:= 7;
end;

constructor TPrintWaybill.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);

 FSettingsbill:= TSettingsPrintWaybill.Create;
 if not assigned(FSettingsbill) then raise exception.create("No created TSettingsbill.");

end;


 
Юрий Зотов ©   (2004-04-14 17:36) [12]

Свойство Settingsbill - только для чтения. Вот и вся причина.

Добавьте write SetSettingsbill, а в нем вызывайте Assign (который надо тоже написать).


 
siriusP   (2004-04-14 17:49) [13]

Ооо, да. Спасибо. Пиво за мной.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1081879501
VirusIP
2004-04-13 22:05
2004.05.02
Помогите разобратся с Radiobutton...


14-1081687647
Thor
2004-04-11 16:47
2004.05.02
посоветуйте книгу по PHP.


14-1081579363
Алхимик
2004-04-10 10:42
2004.05.02
Профессиональная деформация


1-1081771553
tytus
2004-04-12 16:05
2004.05.02
Как в процедуру из библиотеки передать TStringList?


14-1081261783
Soft
2004-04-06 18:29
2004.05.02
Есть ли Бог на Марсе?