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

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

Наследник DBGrid [D5]


dimis ©   (2002-12-09 16:17:00) 

Встала задача написать наследника DBGrid
Проблема такая. мне нужно отловить событие когда связанный с DBGrid DataSet открылся или наоборот закрылся.
в стандартном тогого события нет. Как это осуществить?


Anatoly Podgoretsky   (2002-12-13 19:14:00) [1]

Сам DBGrid не имет данных и не открывает наборы данных, это делает ассоциированный с ним набор, вот у этого набора есть 4 собыия на открыти и на закрытие, до и после, если теб очень нужно, то ты должен назначить именно им свои обработчики, доступ до набора делается через свойство DataSource.DataSet но проблема у тебя перевернута с головы на ноги.
TClientDataSet является наследником TDataSet, так что все эти события у него есть, плюч еще свои специфичные


Cheshit   (2002-12-13 18:57:00) [2]

Подобную проблему решил используя CashedUpdates и фальшивый UpdateSQL. Тогда событие mросто не понадобилось и все перехватываю на Post и идет на процедуру


VAleksey   (2002-12-09 18:20:00) [3]

Что-то ты морочишся однако. :)) Заработался наверное.


dimis   (2002-12-09 17:52:00) [4]


> делается попытка ловить это на презентационном уровне

это я знаю
если не получается ответить мне на вопрос в такой интерпретации -попробую объяснить вормулировку задачи
есть DBGrid в нем отражаются данные. Пользователь хочет их редактировать напрямую - без отдельной формы.
Проблема в том что все изменения должны происходить через хранимые процедуры и курсор в общем случае нередактируемый.
Проблему можно решить используя TClientDataSet,но надо его запихнуть в DBGrid и при обновлении основного курсора переоткрывать его. Что делать?


asmith   (2002-12-09 17:35:00) [5]

DBGrid тут ни при чем. А что касантся DataSet, то для этого класса существуют события BeforeOpen, BeforeClose и другие. ИМНО это тебе и нужно. И вообще сам подход не правильный - нужно реагировать на поведение программного слоя, отвечающего за доставку данных, а делается попытка ловить это на презентационном уровне. Каждый должен замиматься своим делом.


dimis   (2002-12-09 17:07:00) [6]

я тоже использую этот компонент
мне всеравно от чего делать наследника(хотя EhLib конфликтует иногда со стандартными компонентами)
вопрос в том чтобы отловить мненно то событие о котором я спрашивал.

> От себя лично скажу - Грид на все случаи жизни

не на все , тоже пришлось модифицировать
Например событие ColWidthsChanged есть, о столбца в параметрах нет.
Только давай не будем переходить на обсуждение компоненнта. Правда если ты знаешь как реализовать мою проблему на DBGridEh - я буду счастлив


Сергєєв Володимир   (2002-12-09 16:43:00) [7]

А ты подойди к задаче с другой стороны.
Нафиг тебе наследник DBGrid ? Че то реализовать нестандартное(в смысле нестандартное Делфячье )хочется ? А ты посмотри, может уже кто-то написал это и тебе достаточно взять готовый исходник ?

Я, например, давно уже юзаю библиотеку Большакова EhLib(DBGridEh, DBPrintGridEh и др.). Непомню точно адрес, в конференциях за вчерашний день посмотри, где-то в форуме я его видел. От себя лично скажу - Грид на все случаи жизни. Наверное и автор сам не знает всех областей, куда его можно воткнуть.

Единственное что, при всем моем уважении к Дмитрию, я его считаю глупым человеком. За такой компонент бабло надо брать немеренное, а он - открытый исходник дает. У буржуев бы поучился. Какая-то долбанутая библиотека (не будем называть имена), которая конфликтует с версиями делфей через одну и не реализует половины того, что есть у Большакова - 99 у(битых) е(нотов) стоит.


Наверх

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