Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-8508
dolphin1
2003-10-23 17:12
2003.11.03
Минимиальный размер


14-8621
Мазут Береговой
2003-10-14 06:43
2003.11.03
Windows XP и MTS


1-8398
udavf
2003-10-22 16:51
2003.11.03
scroll


3-8307
Alex-kosmonavt
2003-10-13 14:32
2003.11.03
не могу выполнить запрос


1-8513
Виталя
2003-10-23 18:46
2003.11.03
Что возвращает StrToDateDef(Str:string,DefDate:TDate) ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский