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

Вниз

procedure TCustomImageList.DefineProperties(Filer: TFiler);   Найти похожие ветки 

 
GuAV ©   (2005-03-08 15:39) [0]

Можно ли запретить сохранять Bitmap ?
И если да. то как ?


 
Набережных С. ©   (2005-03-08 16:29) [1]

Подробней?


 
Юрий Зотов ©   (2005-03-08 17:20) [2]

Возможно, "легальный" способ - переобъявить то же самое свойство с параметрами ("Bitmap", nil, nil, False). Но не уверен, не пробовал.

Зато точно сработает "хакерский" способ - вызвать унаследованный метод "деда", не вызывая унаследованного метода "отца".

Еще возможно, что решение лучше искать не в DefineProperties, а где-то еще. Надо полазить по коду VCL.


 
Набережных С. ©   (2005-03-08 17:28) [3]

Вероятно, TCustomImageList не сам по себе используется, а в составе чего-то? Имхо, оттуда и надо начинать рыть.


 
GuAV ©   (2005-03-08 21:09) [4]

>Юрий Зотов ©   (08.03.05 17:20) [2]

> Возможно, "легальный" способ - переобъявить то же
> самое свойство с параметрами ("Bitmap", nil, nil,
> False). Но не уверен, не пробовал.


Проверил.
Нет. Переобъявить таким образов св-во не получится.


>Зато точно сработает "хакерский" способ - вызвать
>унаследованный метод "деда", не вызывая
>унаследованного метода "отца".


Как ?

>Набережных С. ©   (08.03.05 16:29) [1]

> Подробней?


наследник TCustomImageList сам заполняется изображениями после создания при изменении размеров и добавленых свойств.

Проблема в том что при сохранении Bitmap он загружается уже после создания и если ни одно из published свойств влияющих на изображения не изменено, то в нём остаётся Design-time версия изображений.

Уже понял что если компонент читается из dfm, то надо создавать изображения после прочтения. Как это грамотно реализовать, при условии что компонент не обязательно создаётся в дезайнтайме ?

Кроме того, хотелось бы всё же избавится от хранения Bitmap, всё равно от него никакой пользы.


 
Набережных С. ©   (2005-03-08 21:37) [5]


> GuAV ©   (08.03.05 21:09) [4]

Код покажи. Хотя бы объявления, в той части которая касается вопроса, с краткими пояснениями. А то я опять ничего не понял. Собственно, за вызов DefineProperties листа отвечает его владелец. Может просто объявить это свойство с STORED FALSE?


 
GuAV ©   (2005-03-08 22:24) [6]

Вопрос [0] снимается.
Оказывается методы ReadData и WriteData виртуальные и ни на что кроме DefineProperties не влияют и их можно заменить пустыми. Как я смотрел .. ? :(

всем спасибо.


 
Юрий Зотов ©   (2005-03-21 00:27) [7]

> GuAV ©   (08.03.05 21:09) [4]

>>Зато точно сработает "хакерский" способ - вызвать
>>унаследованный метод "деда", не вызывая
>>унаследованного метода "отца".

> Как ?

Очень просто, если речь идет о виртуальном методе (а о нем она и идет).

Первые 4 байта любого объекта содержат ссылку на его класс (то есть, на VMT). Подменяем их содержимое нужным, вызываем метод, потом все восстанавливаем обратно. И вся наука.

Причем заметьте, что так можно вызвать виртуальный метод любого предка, и даже не только предка.


 
GuAV ©   (2005-03-21 21:23) [8]

>Юрий Зотов ©   (21.03.05 0:27) [7]


> Причем заметьте, что так можно вызвать виртуальный
> метод любого предка, и даже не только предка.


И даже, оказывается не толко виртуальный.

PPointer(Self)^ := ClassParent; - работает и для динамических методов.

Спасибо.


 
jack128 ©   (2005-03-26 00:33) [9]

GuAV ©   (21.03.05 21:23) [8]
PPointer(Self)^ := ClassParent;


очень опасный способ, череватый очень трудно вылавливаемыми глюками, ИМХО



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

Форум: "Компоненты";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.048 c
4-1127128263
Новый Гость
2005-09-19 15:11
2005.11.20
Как узнать, запущен ли Excel и закрыть его в случ. необходимости?


11-1111913330
MInd_fl
2005-03-27 12:48
2005.11.20
Record?


2-1130517725
Yuriy_St
2005-10-28 20:42
2005.11.20
Проблемы с видимостью переменных


2-1130528004
злобная танька
2005-10-28 23:33
2005.11.20
Memo


3-1129040707
AlexLines
2005-10-11 18:25
2005.11.20
поиск и маркировка поисковых фраз





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский