Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

многочисленные Children [D7, WinXP]


Creative ©   (2006-05-02 17:13:00) 

Есть экземпляр класса А и экземпляры классов B, C, D. А связан с осталными отношением Parent-child (А - зparent, B,C,D - children). Допустим при обращении к А, нужночтобы все его дети (независимо от того, сколько их  какого они класса) совершали одну и туже аналогичную процедуру (например рисовали себя) и при этом хочется делать это автоматом для всех детей. Как это грамотно сделать? Программа пишется на winAPI, поэтому использовать TList, добавлять в него каждого новогго ребенка и потом гонять цикл кажется не получается (или я не права)?


Creative   (2006-05-03 17:09:00) [1]

Хм, извините за беспокойство, может быть я и правда неправильно построила вопрос. Задача была проста: создать несколько окон с помощью winAPI и на каждом из них разместить самодельные Control`ы разных классов - их я и назвала Child`ами, например кнопки вперемешку с полями ввода. Список нужен был для того, чтобы  все они дружно отрисовывались в тот момент когда их родительское окно становилось активным. Так как юнит Classes не использовался, у меня было затруднение - какую найти замену TList`у.
Но я таки сделала независимых от VCL класс, аналогичный классу TList и потом сделала именно так, как сказал Юрий Зотов :-)
Большое спасибо за советы, в следующий раз постараюсь высказываться более понятно.


evvcom   (2006-05-03 13:18:00) [2]

Что-то в [0] я не увидел, чтобы отношения parent-child относились именно к классовой наследственности. Посему остается вопрос, что подразумевает автор под "отношениями parent-child"?


Юрий Зотов   (2006-05-02 19:14:00) [3]

Каждый из объектов, который хочет, чтобы какой-то его метод выполнялся автоматически, где-то себя при своем создании регистрирует (где угодно - в списке, в массиве, в другом объекте и т.п.). И тогда остается только пройти по этому регистрационному списку и для каждого объекта в нем вызвать этот метод. Так как все объекты порождены от общего предка, то имя метода, который нужно вызвать заранее известно, так что никаких проблем.


Jeer   (2006-05-02 18:33:00) [4]

А если надо из экземпляра А выполнялись аналогичные методы для child - то обработчики, как сказано.


Jeer   (2006-05-02 18:30:00) [5]

Джо ©   (02.05.06 18:15) [4]

так public-метод и так виден и будет выполняться для всех child, если не перекрыт.


Джо   (2006-05-02 18:25:00) [6]

Пока автора нету, позанимаюсь домыслами :) В смысле реализации — не задействовать ли тут фабрику объектов? Удобство в том, что занесение созданных объектов в единый список будет централизованным.


Джо   (2006-05-02 18:15:00) [7]

И вообще, перечитал вопрос еще раз и понял, что ничего не понял :)
Может, в данном случае лучше регистрировать какой-то, общий для всех, обработчик события?


Рамиль   (2006-05-02 17:41:00) [8]


> Программа пишется на winAPI, поэтому использовать TList,
>  добавлять в него каждого новогго ребенка и потом гонять
> цикл кажется не получается (или я не права)?

А что мешает реализовать список? Или использовать массив.


Джо   (2006-05-02 17:39:00) [9]

Ну, на худой конец, если оба предыдущих варианта почему-то не подходят, можно задействовать для хранения динамические массивы.


Джо   (2006-05-02 17:38:00) [10]

Не вижу, чем использование TList (или TObjectList) может помешать писать программу на WinAPI. Не вижу также, почему нельзя реализовать собственный аналог TList.


Наверх

Титульная страница Поиск, карта сайта Написать письмо