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

Вниз

Интересный вопрос. Создаю компонент на основе TPanel   Найти похожие ветки 

 
Action   (2006-12-21 08:39) [0]

Если после создания кидаем на форму несколько компоеннтов и из кода самого компонента пытаемся обратиться к самому себе

Self

Например для того чтобы что то создать или найти на нашем компоненте ( например другие контролы ) то почему то всегда Self.Name являеться именно той панелью которую кинули на форму последнюю. Соответственно у других панелей обработчики перестают работать и работает только последня панель.

Всё бы ничего , если бы обработчики кода стояли в приложении. Но весь фокус в том что обработка кода происходит именно по событиям на которые реагирует сама панель и соответственно если панель не одна то код становиться нерабочим.

Как правельно обращаться к текущему компоненту из него самого ? Учитывая что компонентов может быть неограниченое количество.

P.S с одной панелью всё ok, с двумя и более уже проблема :(


 
evvcom ©   (2006-12-21 08:50) [1]

У тебя ошибка в программе, в 17 строке. :)

> Как правельно обращаться к текущему компоненту из него самого

Так и обращаться по Self, причем Self можно вообще не писать.

> Всё бы ничего , если бы обработчики кода стояли в приложении.
> Но весь фокус в том что обработка кода происходит именно
> по событиям на которые реагирует сама панель

Т.е. ты обработчики занял прямо в коде самого компонента? Это в корне не верно! Обработчики нужны именно для того, чтобы программист-пользователь компонента мог его использовать. А для программиста-автора компонента существуют виртуальные и динамические методы, из которых обычно и вызываются пользовательские обработчики. Посмотри, например, методы TCustomForm.DoShow, DoHide, DoClose.


 
Action   (2006-12-21 09:03) [2]

> evvcom ©   (21.12.06 08:50) [1]

Компонент предоставляеться как уже готовый модуль к которому нужно только вписать путь к файлу конфигурации и остальное должен делать он сам.

Но из за этой ошибки ничего не получаеться до ума довести :(
Разницы нет пишешь ли ты Self или ничего не пишешь, один фиг обращаеться к последнему кинутому на форму компоненту :(

блин


 
Action   (2006-12-21 10:03) [3]

> > evvcom ©   (21.12.06 08:50) [1]

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

В чём проблема ? И как её решить ?


 
Сергей М. ©   (2006-12-21 10:11) [4]


> В чём проблема ?


Тебе уже сказали - проблема в ошибке в твоем коде в 17-й строке)


> как её решить ?


Очевидно же - найти эту строку и исправить эту ошибку


 
Action   (2006-12-21 10:49) [5]

Моя ошибка. Всё верно. Я наконец то смог разобраться, просто оказалось что объявил одну переменную глобально в компоненте и когда все контролы в компоненте прогонял в цикле этой переменной присваивалось имя последнего компонента т.е панели.
Сам виноват в общем.

Спасибо, тема закрыта. Буду впредь внимательнее.


 
evvcom ©   (2006-12-22 10:48) [6]

> [3] Action   (21.12.06 10:03)
> Немного ты не прав

В том, что и как я понял, я прав. Считаешь по-другому, приводи цитату и свое толкование.

> [3] Action   (21.12.06 10:03)
> компонент сам по себе не вызывает никакие методы

Абсолютная ложь! Или ты написал свой аналог VCL? :-)



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

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

Наверх




Память: 0.48 MB
Время: 0.054 c
2-1166647004
КВАНТ
2006-12-20 23:36
2007.01.14
SpeedButton. Убрать "эффект нажатия".


2-1166795269
Digi
2006-12-22 16:47
2007.01.14
Uninstall


8-1148280272
Тфьу
2006-05-22 10:44
2007.01.14
Проблема с загрузкой JPG. Грузится неверно.


15-1166520432
Tonich
2006-12-19 12:27
2007.01.14
Защита программки


2-1167118319
XTD
2006-12-26 10:31
2007.01.14
Результат пинга