Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Определить откуда создавался 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
4-1137083617
Arazel
2006-01-12 19:33
2006.04.02
Перезагрузка системы без выхода в Out!


1-1140902492
Grol
2006-02-26 00:21
2006.04.02
Умолчать о ошибке после закрытия программы


2-1142767748
Wood
2006-03-19 14:29
2006.04.02
О переменной окружения.


15-1141971458
Mozart
2006-03-10 09:17
2006.04.02
ADSL


15-1142004365
ZeFiR
2006-03-10 18:26
2006.04.02
eXtreme Notepad





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский