Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
4-33398
IKvasnitsky
2003-06-10 11:41
2003.08.11
Вопрос о функции AdjustTokenPriveleges


1-33180
tiam
2003-07-28 09:44
2003.08.11
проверить, что компьютер не используется


1-33159
DimaB
2003-07-25 16:28
2003.08.11
Комбобокс с цветом


1-33095
Alex-21
2003-07-28 21:30
2003.08.11
Два окна


3-33063
VS
2003-07-17 16:47
2003.08.11
Изменение записи





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