Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Вниз

многочисленные Children   Найти похожие ветки 

 
Creative   (2006-05-02 17:13) [0]

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


 
Джо ©   (2006-05-02 17:38) [1]

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


 
Джо ©   (2006-05-02 17:39) [2]

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


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


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

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


 
Джо ©   (2006-05-02 18:15) [4]

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


 
Джо ©   (2006-05-02 18:25) [5]

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


 
Jeer ©   (2006-05-02 18:30) [6]

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

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


 
Jeer ©   (2006-05-02 18:33) [7]

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


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

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


 
evvcom ©   (2006-05-03 13:18) [9]

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


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

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



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

Форум: "Основная";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
1-1146820596
Delphi5.01
2006-05-05 13:16
2006.06.11
Получение handle-а активного компонента (вне рабочей формы)


6-1139323407
0bsid
2006-02-07 17:43
2006.06.11
WinInet. как указать прокси?


2-1148361462
Konnor
2006-05-23 09:17
2006.06.11
Reboot


15-1147724915
Суслик
2006-05-16 00:28
2006.06.11
Тип decimal в Delphi.


15-1147761568
QuickFinder
2006-05-16 10:39
2006.06.11
DJVU





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский