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

Вниз

Делал ли кто подобный компонент или просто класс   Найти похожие ветки 

 
SlavaK   (2006-10-24 15:19) [0]

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

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

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


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

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


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

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


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

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


 
GrayFace ©   (2006-10-24 17:47) [4]

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


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

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


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


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


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


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

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

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


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

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

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

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


 
Джо ©   (2006-10-24 18:29) [9]

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

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


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


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

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


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

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


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

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


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

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


 
Leonid Troyanovsky ©   (2006-10-24 19:44) [14]


> SlavaK   (24.10.06 18:51) [11]


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

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

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

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

--
Regards, LVT.


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

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



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

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

Наверх





Память: 0.48 MB
Время: 0.041 c
2-1163580077
DelphiLexx
2006-11-15 11:41
2006.12.03
Обмирает OddRowColor в DBGridEh e


15-1163348628
Михель
2006-11-12 19:23
2006.12.03
Не могу починить DMClient, заглючил и не лечится...


15-1163276275
ZeroDivide
2006-11-11 23:17
2006.12.03
Масштабирование LCD-монитора как отключить?


15-1163623247
Сишник
2006-11-15 23:40
2006.12.03
Силачам в С++ :-)


15-1163423745
I want Java)
2006-11-13 16:15
2006.12.03
Java





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский