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