Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизИнтересный вопрос. Создаю компонент на основе 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c