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

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

Делал ли кто подобный компонент или просто класс [D3, Win2k, WinXP]


SlavaK ©   (2006-10-24 15:19:00) 

С чего все начинается: Есть система написанная на Delphi 3 с великим множеством интерфейсных форм, которую нужно сопровождать. Нужно упростить этот процесс а заодно и отрефакторить имеющийся код.
Поведение большинства компонентов весьма (собственно обработчики событий), схоже, хотя сами формы - различны.

В общем родилась идея написать классов по своей сути схожих с ConstraintBroker и содержащих в себе общую часть обработки.
Так, например имея такой класс/ы, который бы можно было связывать с компонентами конкретной формы (в дизайне или рантайме, неважно) можно было бы существенно уменьшить код, дописывая только исключения в обработке каждой конкретной формы. Кроме этого такой Broker был бы перенсим на любое другое приложение...

Делал ли кто нибудь подобное?


SlavaK   (2006-10-26 11:12:00) [1]

Да, господа, TAction, TActionList, TActionManager это именно то чем можно было бы воспользоваться, но в Delphi 3 их еще нет....
Впрочем, почти все в наших руках - попробую найти исходники для этих классов, может и получится ими воспользоваться.
Благодарю всех за внимание!


Leonid Troyanovsky   (2006-10-24 19:44:00) [2]


> SlavaK   (24.10.06 18:51) [11]


> Гораздо удобнее этот UniversalHandler накидать/заюзать на
> формы, сцепить его с контролами, затем в основное меню добавить

Т.е., в D3 и накидать?

>  Я ищу пусть не точно такое, пусть подобное, но

С перламутровыми пуговицами?

--
Regards, LVT.


Наиль   (2006-10-24 19:43:00) [3]

Готовое - это TAction.
Поэтому вопрос, чем тебя ActionList не устраевает?


SlavaK   (2006-10-24 18:57:00) [4]

Я ж почему спрашиваю, вопрос не в том чтоб написать с нуля...эт можно, но не хочется, так как тут еще придется повозиться. Я ищу пусть не точно такое, пусть подобное, но уже готовое...


SlavaK   (2006-10-24 18:51:00) [5]

Базовый клас для форм неудобно, ведь как ты заметил - проект уже сделан...
Гораздо удобнее этот UniversalHandler накидать/заюзать на формы, сцепить его с контролами, затем в основное меню добавить опцию "новая версия" -и если она активна то использовать обработчики из UniversalHandler если не активна - те что были...
А с формами как ты этого достигнешь?..


StriderMan   (2006-10-24 18:33:00) [6]


> Джо ©   (24.10.06 18:29) [9]
> Ну, дык, собственно, репозитарий в Делфи и предоставляет
> такую возможность

Единственная проблема в том, если проект УЖЕ сделан без базового класса, и в нем вагон формочек, то тут без авто-обработки кода и DFM не обойтись.


Джо   (2006-10-24 18:29:00) [7]

> [8] StriderMan ©   (24.10.06 18:18)
> ИМХО лучше сделать базовый класс для таких форм и в него
> напихать "общих" обработчиков.

Ну, дык, собственно, репозитарий в Делфи и предоставляет такую возможность.


StriderMan   (2006-10-24 18:18:00) [8]

ИМХО лучше сделать базовый класс для таких форм и в него напихать "общих" обработчиков.

А если делать специальный класс для обработчиков, то какие проблемы?:

TUniversalHandler = class(TComponent)
 published
   procedure OnDoSomething(Sender: TObject);
   procedure OnDoSomethingElse(Sender: TObject);
 ....
 end;


Наиль   (2006-10-24 18:17:00) [9]

[5] - это точное описание Action'ов.
Разница только в том, что ты хочешь использовать заранее предопределёные методы, чуть ли не во всех своих программах. А в action'ах приходиться писать каждый раз заново. Я правильно понял? Если так, то два пути:
1. Сделать потомка от TAction'а, чтобы события не перекрывались. Гланое тут - глубокое взаимодействие контролов и action'ов на основе private и protected методов. Т.е. своего такого ты не напишешь.
2. TDataModule + TActionList. Без комментариев.

Решать подобное мне приходилось, но на основе репозитария.


Игорь Шевченко   (2006-10-24 18:14:00) [10]


> написать классов по своей сути схожих с ConstraintBroker


Для невежественных можно поподробнее ?


SlavaK   (2006-10-24 17:56:00) [11]

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


GrayFace   (2006-10-24 17:47:00) [12]

Вызывает ассоциации с Action'ами.


SlavaK   (2006-10-24 16:03:00) [13]

Если речь про репозитарий в самом Делфи то нет, не спасет.
Причин тому множество - неудобно переносить на разные рабочие места, сам репозитарий привязан к формам...
Идея как раз в том чтоб не привязываться к компонентам или формам, а сделать заготовку с поведением которой будет поставляться компонент...


SlavaK   (2006-10-24 15:45:00) [14]

Какой репозитарий? Пример, плиз!


Джо   (2006-10-24 15:30:00) [15]

Не знаю, понял ли я вопрос, но не спасет ли репозитарий?


Наверх

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