Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
ВнизСобытия компонента Найти похожие ветки
← →
Alex_Raider (2003-09-22 13:03) [0]Задача:
Есть грид.
У него есть коллекция столбцов.
Хочется сделать сохранение и загрузку позиций и размеров столбцов грида.
(Коллекция принадлежащая компоненту грида).
Есть желание сделать это в своем классе-наследнике, а не в
событиях OnCreate(), Close() класса-владельца (форма).
Что посоветуете для перекрытия?
На загрузку я перекрыл Loaded().
Выгрузка на BeforeDestruction(), похоже, не работает...
← →
Kosha (2003-09-22 13:18) [1]Сохранение и восстановления параметров грида я вызываю в форме как метод грида на OnShow и OnClose формы. Работает нормально.
← →
Developerr (2003-09-22 13:59) [2]А не проще воспользоваться компонентом из RxLybrary - FormStorage. Он все сохраняет и запоминает.
← →
Alex_Raider (2003-09-22 14:04) [3]нет, мне это не подходит.
Я делаю рефакторинг собственного Framework`a.
В нем важно чтобы мои custom-компоненты умели обрабатывать себя сами, без сторонних библиотек, компонентов и без написания каждый раз обработчиков owner-класса (формы), даже несмотря на то что у меня есть template-формы.
Компонент должен уметь делать это сам.
Проблема, похоже в самом гриде (я использую DbGridEh).
← →
Reindeer Moss Eater (2003-09-22 14:10) [4]Лучше всего садиться на DataSource.DataSet.BeforeClose и AfterOpen.
Например сохранив адреса обработчиков уже назначенных, прописать свои и в конце своей обработки вызывать сохраненные
← →
Alex_Raider (2003-09-22 14:48) [5]Идейка вообще-то неплохая, реально это внутренний
datalink.onchange
у грида.
да только по-нормальному его не "выцарапать"
из класса TDbGridEh, также как и не перехватить установку
проперти Datasource, поэтому делать нужно после загрузки формы
и перед ее разрушением.
Реально я конечно, могу поставить Class Method Hook
(как в RX), но это кривь...
Компонент-врайтеры! Ау!
Я уже сто лет не писал компонентов, мож suggest какой будет?
← →
Alex_Raider (2003-09-22 14:53) [6]Сохранять адреса обработчиков низя,
кривизна это.
Хотя бы оттого, что у меня несколько раз наследуются формы.
У грида на одном уровне иерархии могут быть одни обработчики,
на другом - другие, к тому же вызывающие унаследованные.
Лучше перекрывать Doxxx - функции,
"дергающие" Onxxxx - эвенты.
← →
Reindeer Moss Eater (2003-09-22 15:15) [7]У грида на одном уровне иерархии могут быть одни обработчики,
на другом - другие, к тому же вызывающие унаследованные.
Да хоть миллионное поколение наследника. Какая разница-то?
Смотрим, что мы в рантайме. Смотрим, что есть датасорс, а у него есть датасет. Если у него уже назначено BeforeClose и AfterOpen сохраняем их адреса, вешаем свои обработчики.
В них выполняем свою работу, после чего вызываем сохраненные обработчики если они были.
Все.
← →
Alex_Raider (2003-09-22 17:27) [8]Разница в том, что
я не извращенец - делать обьект, который что-то "перехватывает" у других обьектов.
Вся обработка должна быть сосредоточена внутри самого обьекта.
по ключевым словам Loaded() и BeforeDestruction() сведущие люди обычно понимают что я пишу компонент - наследник.
Всё, всем спасибо, все свободны.
← →
Reindeer Moss Eater (2003-09-22 17:38) [9]по ключевым словам Loaded() и BeforeDestruction() сведущие люди обычно понимают что я пишу компонент - наследник.
Сведущие люди еще допускают, что у грида наследника может не быть колонок, созданных в desigtime. И весь код приклеенный к Loaded() и BeforeDestruction() становится малополезным.
Я 10 раз переоткрою датасет грида до его уничтожения и 10 раз потеряю вручную установленную ширину колонок.
← →
icWasya (2003-09-22 17:54) [10]почитай про DefineProperties - эта штука придумана для чтения/записи некоторых данных, которые нецелесообразно делять свойствами
← →
Leha (2003-09-22 18:04) [11]Не пробовал в INI-шку?
← →
Reindeer Moss Eater (2003-09-23 09:48) [12]я не извращенец - делать обьект, который что-то "перехватывает" у других обьектов.
И в чем же якобы заключается извращенство при этом?
Вся обработка должна быть сосредоточена внутри самого обьекта.
А она внутри объекта при моем способе и будет.
← →
NAlexey (2003-09-23 10:20) [13]Зря стараетесь, автор уже отпустил всех своим волеизъявлением. Можем расслабиться и попить чайку. Только не забывайте делать рефреш каждые 5-6 сек. Вдруг он изъявит желание опять нас собрать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c