Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизКомпонент, потомок TDBGrid: какой метод срабатывает при... Найти похожие ветки
← →
KSergey (2003-07-24 15:37) [0]Компонент, потомок TDBGrid: какой метод срабатывает при смене текущей строки?
Только я знаю, что вообще-то надо цепляться к DataSet"у соответствующему, но мне то надо это все в компоненте проделать! (узнать, что пользователь сменил строку). Что-то ничего пока не нашел подходящего...
← →
Skier (2003-07-24 15:40) [1]
> Только я знаю, что вообще-то надо цепляться к DataSet"у
> соответствующему, но мне то надо это все в компоненте проделать!
Что компонент должен делать ?
← →
KSergey (2003-07-24 15:45) [2]Ну там немного наворачивал в свое время, когда еще не понимал, что несколько проще поискать готовые с нужными функциямт ;) Хотя опять же потренировался, занятно ;) Ну да это так, лирика..
На данный момент проблема такая: узнать, когда пользователь меняет ячейку или строку (т.е. фактически тоже ячейку) для сброса одного флажка.
ColEnter (равно как и ColExit) не срабатывают, заразы, при смене строки, если столбец не меняется. А надо бы найти что-то такое, что срабатывало бы.
← →
Skier (2003-07-24 15:48) [3]>KSergey © (24.07.03 15:45)
Ты не понял вопроса.
Я спрашивал зачем это нужно узнавать ? Какова дальнейшая цель ?
← →
KSergey (2003-07-24 16:01) [4]Skier © (24.07.03 15:48)
>KSergey © (24.07.03 15:45)
Ты не понял вопроса.
Я спрашивал зачем это нужно узнавать ? Какова дальнейшая цель ?
Я немного не пойму какая в том разница... Я же написал: для сброса некоей пременной синхронно со сменой ячейки. Этого недостаточно?
Хорошо, попробую вот так описать.
Задача: чтобы при клике мышью в любую ячейку происходило:
а) кликнули на новую (ранее не выделенную ячейку) - ничего не делать (но запомнить! ;)
б) если на эту ячейку кликнули уже второй раз, вернее кликнули в активную ячейку (кликнули в прошлый раз или она была ранее выбрана каким-то иным способом) - отработать некое действие.
Самый общий смысл - чтобы при хаотичном клике мышью по гриду это самое некое действие не отрабатывалось сразу же, а только при 2 кликах - а то наотрабатывается столько, что не разгрести ;) Только речь не о двойном клике, а именно о 2 одинарных.
Вообще-то пока писал, то вырисовалось 2 мысли
1) "второй клик в активную ячейку" - это надо допумать, осталось определеить активную до клика мыши
2) а может на двойной клик завязаться?.. подумаю, хотя тоже не совсем здорово...
← →
Skier (2003-07-24 16:03) [5]TDBGrid.OnCellClick ?
← →
KSergey (2003-07-24 16:07) [6]Да клик-то оно клик, но ведь я могу сменить ячейку и клавой, а это в слик не отлавливается...
← →
Reindeer Moss Eater (2003-07-24 16:16) [7]Вешайся на DataSource.OnDataChange
← →
KSergey (2003-07-24 16:24) [8]Reindeer Moss Eater (24.07.03 16:16)
Вешайся на DataSource.OnDataChange
Дык это-то понятно, но неприлично как-то из компонента грида (еще раз подчеркну - не во Внешней" так сказать программе!) вшаться на событие его DataSource, тем более, что этот DataSource может быть еще и не задан! Не, так нельзя.
меня что удивляет: ну ладно, ну нет у грида свойств/событий про перемещение, но сам-то он их как-то отрабатывает же, блин!
Посмотрел сейчас еще - все у них позапрятано, все private... Зафиг они все прячут, уже не раз натыкался
Вроде метод Click вызывают в том числе и на клавишах - и опять нифига - при срабатывает только при смене колонки, при смене строки (клавишами, мышью) - фигу вам...
Может еще есть у кого соображения?
← →
Reindeer Moss Eater (2003-07-24 16:28) [9]Всегда можно:
1. Узнать , есть ли DataSource
2. Узнать, есть ли у него обработчик OnDataChange
3. Сохранить адрес этого обработчика у себя и назначить свой
4. В своем обработчике сделав все нужное вызвать сохраненный обработчик
← →
KSergey (2003-07-24 16:32) [10]Можно, но что-то не нравится мне это, уж извините.
Есть еще кто-то, кто считает этот вариант нормальным? Выскажетесь, может я напрасно упорствую.
А пока лишь нашел причину не срабатывания Click - эти гады в CustomDBGrid"e обработчик KeyDowт полностью перекрыли, и уже ничего не вызывают более... А я по CustumGrid"у смотрел, но его не инхеритят...
← →
Набережных С. (2003-07-24 18:55) [11]DBGrid связан с DataSource через объект, возвращаемый свойством DataLink (protected)
← →
KSergey (2003-07-25 14:57) [12]Набережных С. © (24.07.03 18:55)
Спасибо, я, к сожалению, из-за клиента форумов (странный какой-то глючек) не смог вовремя увидеть Ваше сообщение, а потому сегодня сам тут примерно до этого попер - когда стал разгребать как же так это все завязано.
Если кому-то интересно: в DB гриде есть свойство, вызываемое при смене строки, которое вообще-то очень даже просто и логично называется, но ведь сразу не сообразишь. Пришел к нему от DataSourcе"са. Scroll: виртуальное, протектное - короче, лучше не придумать.
Если еще кому-то интересно: для отлавливания всех моментов изменения текущей ячейки DBGrid"а можно порекомендовать переопределить следующие методы (все - виртуальные, протектные):
Scroll - только здесь удалось отловить изменение строки без изменения столбца
ColEnter - смена столбца
DoEnter - т.к. при получения фокуса Grid"ом не происходит вызов ColEnter
LinkActive - здесь удалось отловить открывание привязагнного DataSet"а, что тоже можно рассматривать как изменение текущей ячейки (изменение данных)
ЗЫ
И это оказывается потрепаться?? Зашибись!...
Предлагаю оставить одну конференцию! Нафиг заморачиваться?
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c