|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.07.2015, 14:26 | #1 |
Форумчанин
Регистрация: 22.11.2014
Сообщений: 109
|
Полтергейст DbgridEh - Delphi
На форме есть таблица DBGridEh подключенная к базе Access через ADOConection, ADOTable, DataSource, и Checkbox подключенный к этой же базе к одной из ячеек, на нем сидит событие OnClick, по нажатию на него происходят какие-то изменения...
Так вот сам вопрос - если я удаляю (к примеру) одну из строк из таблицы, строка удаляется, но при этом программа какого-то дьявола заходит в обработчик события OnClick и выполняет все что там написано... Почему так происходит? Я предполагал, что событие OnClick выполняется строго по нажатию на этот контрол, это глюк Delphi 2010 или я чего-то еще не знаю? |
28.07.2015, 14:29 | #2 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Какой такой Чекбокс ? Как прицеплен? Покажите духовную связь рядового Чекбокса с полем БД. Или это особенный чекбокс? Мало информации для ответа.
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
28.07.2015, 15:24 | #3 |
Форумчанин
Регистрация: 22.11.2014
Сообщений: 109
|
DBCheckbox, к тому-же DataSource что и таблица, только к своей ячейке из этой таблицы, прицеплен, чтоб в каждой строке из этой таблицы он сохраняет свои значения, false или true, но при нажатии на него он еще и делает недоступными некоторые ячейки из таблицы, это вся его задача...
|
28.07.2015, 15:36 | #4 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Это целиком зависит от автора компонента, от его видения. Единого правила нет. Даже в обычных, самых простых компонентах VCL OnClick выполняется по-разному: где-то выполняется (TCheckBox), где-то нет (TTabSheet).
В разработке: воспроизводственный контур ИТ
|
28.07.2015, 15:42 | #5 |
Форумчанин
Регистрация: 22.11.2014
Сообщений: 109
|
Так тогда как предугадать поведение программы, если программист перестает контролировать события? Должна же быть какая-то логика, получается что какое-то действие может быть или не быть как вздумается программе?
|
28.07.2015, 16:37 | #6 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
ВСЯ задача DBCheckBox предусмотренная программистом-разработчиком
отображать и МЕНЯТЬ значение связанного(указанного) поля текущей записи набора данных. А как и каким образом ... Цитата:
=> Надо менять отображение, А как и каким образом .... Да хоть имитацией щелчка. Цитата:
Иначе не было этой темы.
программа — запись алгоритма на языке понятном транслятору
|
||
28.07.2015, 16:41 | #7 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Логика заключается в разделении визуального и невизуального кода, то есть пакетные действия над данными не должны делаться внутри обработчика OnClick. Выше уже написали, только другими словами.
В разработке: воспроизводственный контур ИТ
|
28.07.2015, 17:28 | #8 |
Форумчанин
Регистрация: 22.11.2014
Сообщений: 109
|
Спасибо Всем! Кое что понял но не все... Если более простым языком, как избежать этого? У меня в обработчике OnClick есть только отключение таких-же контролов, т.е. когда нажимаю на DBCheckBox1 то в обработчике OnClick - DBCheckBox2.Enabled:=false; DBCheckBox3.Enabled:=false; и все, но они тоже связанны с базой, просто мне непонятна связь, удаляет строку из таблицы датасэт, событие OnClick реагирует на нажатие, кто делает связь между удалением и щелчком мыши, в команде удаления строки нет даже имитации нажатия, вот это не могу понять
|
28.07.2015, 19:47 | #9 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Это нужно компилировать с отладочными версиями модулей, входить в них отладчиком по F7 и смотреть, что где. Наверняка где-то отправляются и обрабатываются сообщения типа CM_XXXX -- внутренние сообщения VCL.
В разработке: воспроизводственный контур ИТ
|
28.07.2015, 20:42 | #10 |
Форумчанин
Регистрация: 22.11.2014
Сообщений: 109
|
Vapaamies, Спасибо! Вы прояснили мне ситуацию, но если Вам не трудно, из своего личного опыта, из-за чего может такое происходить, где я мог накосячить, что не учел, на будущее хочу это понять, в основном коде ничего подозрительного не нашел, просто напрягает то, что начинаются в программе происходить движения, которые я не заказывал
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DBGridEh SearchPanel - Delphi | S_007 | Общие вопросы Delphi | 2 | 26.07.2015 17:26 |
копирование данных текущей строки DBGridEh В другjq DBGridEh | ТипичныйСтудент | Помощь студентам | 1 | 06.06.2013 21:19 |
полтергейст - устранить последствия трояна | Jackkkk | Безопасность, Шифрование | 3 | 28.04.2012 01:41 |
Полный полтергейст, неправильно работает кеш в httpd | Nickolay911 | PHP | 1 | 06.08.2011 18:07 |
Полтергейст в поточных переменных | termsl | Общие вопросы Delphi | 12 | 30.08.2010 15:36 |