Главная страница
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.045 c
14-1133434178
Alkid
2005-12-01 13:49
2005.12.25
NamedPipe и отжор памяти


14-1133364781
Piter
2005-11-30 18:33
2005.12.25
Плагин к Miranda


14-1133244371
Ega23
2005-11-29 09:06
2005.12.25
С днем рождения! 29 ноября


8-1119874845
Amadero
2005-06-27 16:20
2005.12.25
Воспроизведени звука


2-1133965768
Daria
2005-12-07 17:29
2005.12.25
как в программе автоматом открывать файлы для работы с ними