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

Вниз

Создание компонентов   Найти похожие ветки 

 
Иванушка   (2005-06-10 15:46) [0]

Мастера, нужно добавить в компонент новое свойство для выбора иконки или картиенки.Вродебы разобрался и вродебы нет. Не пойму обязательно переопределять событие Edit в редакторе свойств.
Если можно, то пожалуйста наглядней объясните.


 
Юрий Зотов ©   (2005-06-10 21:15) [1]

Делайте свойство типа TPicture, тогда свой редактор вообще не будет нужен - автоматически подключится стандартный. Пример можно посмотреть, скажем, в TImage.


 
Иванушка   (2005-06-14 12:04) [2]

Объявил как TPicture, скомпилировал компонент все класно. Но вот при устаноке компонента на форму ругается:

Access violation at address 40003e91 in module "vcl50.bpl". Read of address 00000000


 
Иванушка   (2005-06-14 12:07) [3]

Да, а вот на другой машине на форме показалось но при изменении любого свойства выводится уже упомянутое сообщение.


 
-=XP=- ©   (2005-06-14 12:28) [4]

Объявил как TPicture, скомпилировал компонент все класно. Но вот при устаноке компонента на форму ругается:

А экземпляр TPicture создаете?
И каким образом производите чтение/запись свойства?


 
-=XP=- ©   (2005-06-14 12:36) [5]

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

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

destructor TMyComponent.Destroy;
begin
 FPicture.Free;
 destructor Destroy;
end;

procedure TMyComponent.SetPicture(const APicture: TPicture);
begin
 FPicture.Assign(APicture);
end;


P.S. Для отслеживания изменений у TPicture есть события OnChange, OnProgress.


 
Иванушка   (2005-06-14 12:45) [6]

Я тоже вначале подумал на счет объявления. Объявил и даже инициализировал как nil. Все равно не идет. Но больше всего, что, наверное, не правильно записываю значение. Потому что я ж говорю на другой машине все класс только при выборе значения ругань всякая. К тому же ни одно свойство не возможно ввести.
Попробую по-Вашему.


 
Иванушка   (2005-06-14 13:07) [7]

Не всеравно одно и тоже. Правда теперь я смог поместить на форму сам компонент и даже смог выбрать картинку(правда через все тоже сообщение), но снова Access... А что ты имел ввиду на счет отслеживания событий, где именно их отследить.


 
-=XP=- ©   (2005-06-14 14:22) [8]

Не всеравно одно и тоже

Приведите, пожалуйста, полный код Вашего компонента, а то получаются "разговоры ни о чем".

на счет отслеживания событий, где именно их отследить

constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FPicture := TPicture.Create;
FPicture.OnChange := OnPictureChange; // Метод, который будет вызываться по факту изменения Picture
end;

procedure TMyComponent.OnPictureChange(ASender: TObject);
begin
 // Действия на изменение Picture
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
4-1130048108
Navi
2005-10-23 10:15
2005.12.25
Нужен текст без антиалиасинга


5-1118818137
mmms
2005-06-15 10:48
2005.12.25
Компонент от DBGrid, дописать OnColumnMoved


6-1126678729
IHusak
2005-09-14 10:18
2005.12.25
SQL сервер


2-1134144844
guest__
2005-12-09 19:14
2005.12.25
TStrings - уничтожение лишних строк.


2-1134231590
MAXHO
2005-12-10 19:19
2005.12.25
Как с помощю своей программы свернуть/развернуть чужое приложение