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

Вниз

Определить откуда создавался component   Найти похожие ветки 

 
webpauk   (2006-03-14 13:56) [0]

в своем компоненте я использую Tlabel.
1.
constructor TMyComponent.Create;
begin
  label:=Tlabel.create(MainForm);
  label.parent =MainForm;
  Label.onClick:=MainForm.labelonclick;
end;


procedure MainForm.labelonclick(Sender:Tobject);
begin

... как отсюда получить доступ к TMyComponent.end;


 
Джо ©   (2006-03-14 16:41) [1]

1.
> constructor TMyComponent.Create;

Это неправильный конструктор для наследников TComponent;

2.
> label:=Tlabel.create(MainForm);

Так делать нельзя категорически.


 
Leonid Troyanovsky ©   (2006-03-14 19:05) [2]


> Джо ©   (14.03.06 16:41) [1]

> > label:=Tlabel.create(MainForm);

> Так делать нельзя категорически.


Как, собс-но, и две следующие.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-03-14 19:06) [3]


> webpauk   (14.03.06 13:56)  

> procedure MainForm.labelonclick(Sender:Tobject);
> begin
> ... как отсюда получить доступ к TMyComponent.end;


Sender as TMyComponent

--
Regards, LVT.


 
Жуков Олег   (2006-03-14 20:39) [4]

> Sender as TMyComponent
Sender будет label а не MyComponent.


 
Жуков Олег   (2006-03-14 20:51) [5]

> webpauk
Как вариант:
Определи новое событие у своего компонента
private
 FOnLabelClick: TNotifyEvent;
published
 property OnLabelClick: TNotifyEvent read FOnLabelClick write FOnLabelClick;

Назначь событию Label.OnClick метод своего компонента (реализованный не в классе формы, а в твоём компоненте,
procedure TMyComponent.LabelClick(Sender...)),
а в этом методе уже вызывай OnLabelClick (если назначен такой обработчик)
if Assigned(FOnLabelClick) then
 FOnLabelClick

Твой компонент ничего не должен знать про MainForm. По многим причинам, одна из них - ты же хочешь, что бы твой компонент можно было использовать на произвольной форме, а не только в главной форме конкретно этой одной программы, иначе вообще, зачем он нужен.


 
Жуков Олег   (2006-03-14 21:01) [6]

Здесь просто недописАл, чтобы не было недоразумений:
if Assigned(FOnLabelClick) then
FOnLabelClick(Self)



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

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

Наверх




Память: 0.47 MB
Время: 0.036 c
4-1137415039
adm
2006-01-16 15:37
2006.04.02
Терминальные сессии


15-1142229826
Некто
2006-03-13 09:03
2006.04.02
Полезные физические упражнения


15-1142070596
Nic
2006-03-11 12:49
2006.04.02
P IV - 2800 (533 MHz FSB) vs Athlon 64 3000+


2-1142950916
RomanH
2006-03-21 17:21
2006.04.02
MDI Окна


15-1141744421
ZeFiR
2006-03-07 18:13
2006.04.02
Новый счетчик-прорыв на сайте?