Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.06;
Скачать: CL | DM;

Вниз

Наследник DBGrid   Найти похожие ветки 

 
dimis   (2002-12-09 16:17) [0]

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


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

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

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

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


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

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

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

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


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

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


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


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

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


 
VAleksey ©   (2002-12-09 18:20) [5]

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


 
Cheshit ©   (2002-12-13 18:57) [6]

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


 
Anatoly Podgoretsky ©   (2002-12-13 19:14) [7]

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



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

Текущий архив: 2003.01.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
4-15360
Iam
2002-11-19 11:38
2003.01.06
Получение текста любого окна...


14-15226
Шишкин Илья
2002-12-14 22:11
2003.01.06
Нужна помощь


1-15150
roman_tutov
2002-12-21 14:30
2003.01.06
Где узнать код символа,


1-15101
reticon
2002-12-20 13:20
2003.01.06
сравнение двух нетипизированных файлов


3-14929
Sterh1
2002-12-13 20:58
2003.01.06
QREport