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

Вниз

Хранение ресурса "внутри" компонента.   Найти похожие ветки 

 
Vaitek_   (2005-12-18 12:42) [0]

Как мне реализовать в собственном компоненте диалог выбора (на этапе поектирования) и возможность хранения связанного изображения (bmp) "внутри" экземпляра компанента, как это сделано в TSpeedButton или TImage. Пробывал смотреть исходники, что-то не могу понять сам.


 
mvv-finder ©   (2005-12-18 20:44) [1]

Как реализовать диалог выбора в двух словах не расскажешь.
Необходимо создать класс-наследник TPropertyEditorClass и зарегистрировать его процедурой RegisterPropertyEditor.

TMyComponent = class
private
 FMyProperty: TMyPropertry;
public
 property MyProperty: TMyPropertry read FMyProperty write FMyProperty;
end;
...
TMyPropertryEditor = class(TPropertyEditorClass)
 function GetValue: string; override;
 procedure SetValue(const Value: string); override;
end;
...
RegisterPropertyEditor(TypeInfo(TMyPropertry), TMyComponent , "MyProperty", TMyPropertryEditor);


А картинку проще всего загрузить из res-файла, например, в конструкторе компоненты.

MyComponent.Picture.Bitmap.LoadFromResourceName(HInstance, "TMYPICTURE");


 
Юрий Зотов ©   (2005-12-18 23:33) [2]

А чтобы ничего этого не делать, надо поручить всю эту работу самой Delphi. В ней все уже есть, надо только правильно сделать свойство.

type
 TMyComp = class(...)
 private
   FPicture: TPicture;
   procedure SetPicture(Value: TPicture);
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property Picture: TPicture read FPicture write SetPicture;
 end;

constructor TMyComp.Create(AOwner: TComponent);
begin
 inherited;
 FPicture := TPicture.Create
end;

destructor TMyComp.Destroy;
begin
 FPicture.Free;
 inherited
end;

procedure TMyComp.SetPicture(Value: TPicture);
begin
 FPicture.Assign(Value)
end;


Это тот минимальный код, который обеспечивает диалог выбора картинки и ее сохранение. Если нужно что-то еще (прорисовка картинки, реакция на ее изменение и пр). - см. исходники TImage.


 
Vaitek_   (2005-12-19 16:18) [3]

Супер! Работает. Спасибо Всем!

З.Ы. А вот если забыть строчку FPicture.Assign(Value) и оставить вместо неё стандартное FPicture := Value - это такие глюки начнутся!!! :-D


 
Юрий Зотов ©   (2005-12-19 16:51) [4]

> если ... оставить ... стандартное FPicture := Value - ... глюки начнутся

Вообще-то, для разработчика компонентов это должно быть очевидной азбукой. Если не так - значит, рановато еще компоненты писать.



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

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

Наверх




Память: 0.45 MB
Время: 0.01 c
15-1149513333
oldman
2006-06-05 17:15
2006.07.02
Нужен совет (не могу пока найти онколога)... :(


15-1149281702
тт
2006-06-03 00:55
2006.07.02
Как сделать чтобы при наведении мушки на слово в RichEdit, оно выделялось другим цветом?


1-1147812521
ychenick
2006-05-17 00:48
2006.07.02
Папки как файлы ( отображение как zip архив)


2-1149952843
ArchValentin
2006-06-10 19:20
2006.07.02
Иконки в ЕХЕшниках


1-1148205429
RUNaum
2006-05-21 13:57
2006.07.02
Поворот PNG без искажений.





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