![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
многочисленные 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.