Главная страница
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.033 c
2-1166637366
Slimer
2006-12-20 20:56
2007.01.14
Проблемма с индексами в таблице


4-1157089018
vodvorezlaya
2006-09-01 09:36
2007.01.14
Как получить вписок окон в системе


11-1143527894
shalex
2006-03-28 10:38
2007.01.14
И еще один вопрос о TabControl


15-1167024945
Slider007
2006-12-25 08:35
2007.01.14
С днем рождения ! 25 декабря


15-1165935162
Гарри Поттер
2006-12-12 17:52
2007.01.14
Монтаж локальной сети. Склько может стоить?