![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонентов [D5, D7, Win2k, WinXP]
Иванушка © (2005-06-10 15:46:00)Мастера, нужно добавить в компонент новое свойство для выбора иконки или картиенки.Вродебы разобрался и вродебы нет. Не пойму обязательно переопределять событие Edit в редакторе свойств.
Если можно, то пожалуйста наглядней объясните.
-=XP=- (2005-06-14 14:22:00) [1]Не всеравно одно и тоже
Приведите, пожалуйста, полный код Вашего компонента, а то получаются "разговоры ни о чем".
на счет отслеживания событий, где именно их отследить
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;
Иванушка (2005-06-14 13:07:00) [2]Не всеравно одно и тоже. Правда теперь я смог поместить на форму сам компонент и даже смог выбрать картинку(правда через все тоже сообщение), но снова Access... А что ты имел ввиду на счет отслеживания событий, где именно их отследить.
Иванушка (2005-06-14 12:45:00) [3]Я тоже вначале подумал на счет объявления. Объявил и даже инициализировал как nil. Все равно не идет. Но больше всего, что, наверное, не правильно записываю значение. Потому что я ж говорю на другой машине все класс только при выборе значения ругань всякая. К тому же ни одно свойство не возможно ввести.
Попробую по-Вашему.
-=XP=- (2005-06-14 12:36:00) [4]
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.
-=XP=- (2005-06-14 12:28:00) [5]Объявил как TPicture, скомпилировал компонент все класно. Но вот при устаноке компонента на форму ругается:
А экземплярTPicture создаете?
И каким образом производите чтение/запись свойства?
Иванушка (2005-06-14 12:07:00) [6]Да, а вот на другой машине на форме показалось но при изменении любого свойства выводится уже упомянутое сообщение.
Иванушка (2005-06-14 12:04:00) [7]Объявил как TPicture, скомпилировал компонент все класно. Но вот при устаноке компонента на форму ругается:
Access violation at address 40003e91 in module "vcl50.bpl". Read of address 00000000
Юрий Зотов (2005-06-10 21:15:00) [8]Делайте свойство типа TPicture, тогда свой редактор вообще не будет нужен - автоматически подключится стандартный. Пример можно посмотреть, скажем, в TImage.