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

Вниз

Сохранение и загрузка свойств компонента, содержащего другие объе   Найти похожие ветки 

 
Raduga   (2003-10-23 08:36) [0]

Здравствуйте, Мастера.
Столкнулся со следующей проблемой.
Есть свой компонент, наследник от Twincontrol. У него есть private поле, содержащее объект TImage (объект постоянный, содержит рисунок, не изменяется пользователем). Как сохранить(а главное загрузить потом) компонент из потока. Имеется ввиду, что пользователь изменяет свойства в run-time.
И вообще как сохранять и загружать компонент,содержащий внутри сябя другие объекты, из потока ?


 
icWasya ©   (2003-10-23 09:32) [1]

ну тут так - если есть свойство - наследник TPersistent, то такое свойство должно сохраняться автоматически. НО!!! если свойство - наследник TComponent, то Дельфя предполагает, что это ссылка на другой компонент, и сохраняется только его имя.

> И вообще как ....

Переписать компонент так, что бы наружу не были видны такие свойства типа TComponent. В данном случае - вытащить в Published дополнительные свойства - например ImageWidth, ImageHeight, ImagePicture ... что там ещё? и через них устанавливать свойства встроенного Image.


 
Raduga   (2003-10-23 09:42) [2]

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


 
REA ©   (2003-10-23 10:22) [3]

См. GetChildren


 
Raduga   (2003-10-23 11:06) [4]

Но у меня же поле типа TImage не является published


 
icWasya ©   (2003-10-23 11:18) [5]

ну а если поле приватное, то каким образом оно создаётся/заполняется ???


 
FOX ©   (2003-10-23 11:30) [6]

Смотри DefineProperty


 
Raduga   (2003-10-23 11:39) [7]

>icWasya © (23.10.03 11:18) [5]
Создается в конструкторе и заполняется тамже


 
Smithson ©   (2003-10-23 11:50) [8]

Тогда зачем тебе его гонять из файла в файл, если он не меняети его содержимое известно? После загрузки из файла создавай его и все...


 
Raduga   (2003-10-23 12:10) [9]

>Smithson © (23.10.03 11:50) [8]
Остальные свойства меняются зато...
Например высота и ширина компонента.


 
icWasya ©   (2003-10-23 13:06) [10]

>[9]
тогда смотри [1]


 
Raduga   (2003-10-23 13:28) [11]

>icWasya © (23.10.03 13:06) [10]
Меняются публикуемые свойства моего компонента, который содержит имадж с картинкой.Эти свойства не имаджа.Имадж не меняется, на него не ссылается ни одно из свойств из секции паблишет.


 
Raduga   (2003-10-23 13:30) [12]

Вопрос по другому.
Как сохранить и восстановить только публикуемые свойства?


 
Polevi ©   (2003-10-23 13:37) [13]

WriteComponent, ReadComponent


 
Raduga   (2003-10-23 13:44) [14]

>Polevi © (23.10.03 13:37) [13]
Использую, но мне не ясно почему нужно дополнительно регистрировать класс TImage, если эти методы предназначены только для публикуемых свойств


 
icWasya ©   (2003-10-23 13:56) [15]

>[11]
ну так сделай


type
TMyComponent =class(TWinControl)
private
Image:TImage;
function GetImageWidth:Integer;
procedure SetImageWidth(Value:Integer);

......
published
property ImageWidth:Integer read GetImage wirte SetImage;
...
end;

...

function TMyComponent.GetImageWidth:Integer;
begin
Result:=Image.Width
end;
procedure TMyComponent.SetImageWidth(Value:Integer);
begin
Image.Width:=Value;
Ivalidate;
end;
...


а вообще о чём вопрос ?
о встроенном Image или о других каких свойствах ?


 
Raduga   (2003-10-23 14:15) [16]

>icWasya © (23.10.03 13:56) [15]
>о встроенном Image или о других каких свойствах ?
О других свойствах, свойствах самого компонента, никакого отношения к имадж не имеющих. А имадж был приватным полем в компоненте. Не ясно было, почему используюя методы ReadComponent, для загрузки свойств компанента
вылетало сообщение что класс TImage не зарегистрирован. Ведь должны были грузится только значения паблишет свойств.

Но здесь мой косячок...:)
Я создавал поле-объект имадж в конструкторе моего компанента, а в качестве владельца указывал свой компанент. Вот здесь и была
собачка зарыта. :)
Еще раз всем огромное спасибо.



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

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

Наверх




Память: 0.5 MB
Время: 0.015 c
14-8646
Nickge
2003-10-09 08:33
2003.11.03
система линейных уравнений


1-8474
vil
2003-10-24 08:10
2003.11.03
просмотр русунков


3-8316
off
2003-10-13 08:23
2003.11.03
Type mismatch?


1-8522
__Я__
2003-10-23 16:20
2003.11.03
Сервисы в NT


7-8697
__
2003-08-22 12:54
2003.11.03
BE-300, WinCE