Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 18:51   #1
_bAd_
Пользователь
 
Регистрация: 11.01.2010
Сообщений: 21
Вопрос дерево разношерстных классов

Требуются следующие классы:
Код:
    P_GUI_DefWindow       = ^T_GUI_DefWindow;
    T_GUI_DefWindow       = class
                            Width, Height, Top, Left   : Integer;
                            Parent                     : P_GUI_Window;
                            Childs                     : array of P_GUI_Window;

                            constructor Create( _Left, _Top, _Width, _Height : Single);
                          end;

    T_GUI_Button          = class(T_GUI_DefWindow)
                            Draw;
                          end;

    T_GUI_Panel           = class(T_GUI_DefWindow)
                            Draw;
                          end;

    T_GUI_Edit            = class(T_GUI_DefWindow)
                            Draw;
                          end;

    P_GUI                 = ^T_GUI;
    T_GUI                 = class
                            FD3DDevice                         : IDirect3DDevice9;
                            MeshShader                         : TMeshShader;
                            _P_GUI                             : P_GUI;

                            Windows                            : array of P_GUI_DefWindow;

                            constructor Create;
                            procedure Init(_GUI : P_GUI; _Handle : THandle; _FD3DDevice : IDirect3DDevice9; _MeshShader : TMeshShader);
                          end;
Это фрагмент общего каркаса моего ГУИ. К виндовским эти окна отношения не имеют, как вы можете понять.
И собственно вопросы:
1) требуется переменные классов T_GUI_Panel, T_GUI_Button и многих многих других выстроить разношерстным деревом. Тоесть на переменной класса Панель могут лежать разные другие классы (входить в перечень чайлдов). Применённый у меня вариант описать массивы детей как указатели на базовый класс P_GUI_Window не работоспособен. Как быть?

2) как сделать, чтоб при создании у этих окон в памяти хранились только переменные, а методы не тратили память под многочисленные свои копии? а-то их там тысячи будет ..

3) Переменная GUI описана в другом модуле и создана:
GUI:=T_GUI.Create;
GUI.Init(@GUI, .......);

А в самом методе T_GUI. Init(...) есть такое безобразие:
_P_GUI:=_GUI;

Дело в том, что окна должны массивом или еще как-то храниться в самом GUI. В процессе отрисовки Draw (индивидуальна у каждого класса окон) окнам требуются много-много всяких величин, хранимых в переменных в GUI. Таким образом мне надо при создании каждого окна передавать ему указатель на этот GUI, но где мне его взять? Единственное, что работает - эта нехорошая конструкция: GUI.Init(@GUI, .......);, в которой я вызывая метод переменной передаю в него адрес этой переменной... Но очень уж как-то криво... Не подскажете?

Четвёртый вопрос задам попозже заранее спасибо

"Апить" - то есть флудить, не нужно.
Или отзовутся, или нет.
Торопитесь? Давайте перенесу во фриланс...

Последний раз редактировалось mihali4; 12.01.2010 в 00:00. Причина: обдумал и изменил тему
_bAd_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
наследование классов Dimarik Общие вопросы C/C++ 15 02.07.2009 20:00
Методы классов hen Помощь студентам 4 07.06.2009 19:42
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18
обьявление классов пыхонин филипп Помощь студентам 1 21.03.2009 20:10
агрегирование классов M_Yuri Общие вопросы Delphi 3 12.02.2008 18:31