Форум: "Компоненты";
Текущий архив: 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