Залипание кнопки.
Проблема такая. При удалении последней записи из таблицы мне нужно чтобы-кнопка удаления(Toolbutton) стала disabled. Ну я и делаю в сабытии Afterscroll для неё enabled=false. Но она при этом почему-то залипает и не отходит назад, хотя её свойство down=false, т.е. она должна быть отжата. Repaint непомогает. Может кому такой баг попадался?
1) А AfterDelete не лучше будет для отслеживания удалений?
2) Как связано enabled и down? При чем тут вообще свойство down? Или у тебя прога зависает?
3) Это не баг.
1) А AfterDelete не лучше будет для отслеживания удалений?
2) Как связано enabled и down? При чем тут вообще свойство down? Или у тебя прога зависает?
3) Это не баг.
Значит так:
1)Пустой рекордсет надо отслеживать не только при удалении. Хотя если такое написать в AfterDelete результат не меняется.
2)Никак, просто при пустом рекордсете нужно сделать недоступной кнопку удаления. А св-во down отражает состояние кнопки(нажата = true, не нажата = false). Прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой, и пока на неё ещё раз не нажмёшь такой и остаётся. При этом св-во down=false.
3) Может быть, но очень похоже.
Пройдись дебаггером...Возникает или нет событие по AfterScroll после опустошения таблицы? Попадаем ли на строку SomeToolButton->enabled = false. Что потом?
"прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой"
Означает ли это, что кнопка становится-таки disabled, но при этом не становится !Down?
В чем проблема-то?
Пройдись дебаггером...Возникает или нет событие по AfterScroll после опустошения таблицы? Попадаем ли на строку SomeToolButton->enabled = false. Что потом?
"прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой"
Означает ли это, что кнопка становится-таки disabled, но при этом не становится !Down?
Уже пробовал. Событие возникает, кнопка становаится disabled(серенькая такая :-)), но при этом так и остаётся выглядеть нажатой.
Уже пробовал. Событие возникает, кнопка становаится disabled(серенькая такая :-)), но при этом так и остаётся выглядеть нажатой.
Tool buttons can remain Down only if Style is tbsCheck.
I think, you understand me:)
Tool buttons can remain Down only if Style is tbsCheck.
I think, you understand me:)
Yes of course. But Style is tbsButton. :D
Слушай, если кнопка disabled и серенькая, то какая разница нажата она или нет?
Сделай чтоли
Down=false;
Enabled=false;
Т.е. измени down до disabled
2Saris:
Слушай, если кнопка disabled и серенькая, то какая разница нажата она или нет?
Сделай чтоли
Down=false;
Enabled=false;
Т.е. измени down до disabled
Уже пробовал и до и после не помогает. :( А разницы никакой, просто некрасиво, и тупой юзер, который будет пользовать программу может невзначай перепугаться:D. Вообщем если не получится исправить придётся оставить как есть :( .
Yes of course. But Style is tbsButton. :D
Я к тому, что может стоит стиль поменять а потом пробовать поиграть с down.
Я к тому, что может стоит стиль поменять а потом пробовать поиграть с down.
Эффект довольно схожий. Вообщем или руки у меня кривые или одно из двух...
Эффект довольно схожий. Вообщем или руки у меня кривые или одно из двух...
Проблемс. Попробовал повторить ситуацию (правда без таблиц) насиловал - насиловал в различных ситуациях, пашет сучара, в чем у тебя проблема, трудно сказать. Может ты все-же прав и выцепил какой-то нестандартный глюк? Ну пашет, что tbsCheck что tbsButton все пашет. Но руки не кривые - это факт, смотри код, ищи нъюансы. Думал, последовательность Enable Desable влияет, по барабану (в моих примерах без разницы).
Код естественно сюда выкладывать, глупость, наверняка у тебя там сто пудов колючей проволоки.
В общем удачи, у меня работает, ищи глюк.
...просто некрасиво, и тупой юзер, который будет пользовать программу может невзначай перепугаться:D. Вообщем если не получится исправить придётся оставить как есть :( .
Баг конечно нужно найти и истребить. А пока он не найден, чтобы не пугать вышеупомянутого юзера :), сделай что-нибудь такое, чтобы кнопочку отпустить:
PostMessage(h, WM_LBUTTONDOWN, 0 ,0);
PostMessage(h, WM_LBUTTONUP, 0, 0);
Button1->Enabled = false;
P.S. Ненадо оставлять как есть. Лучше сделать через задницу (как в моем примере :)), чем не сделать вообще.
Баг конечно нужно найти и истребить. А пока он не найден, чтобы не пугать вышеупомянутого юзера :), сделай что-нибудь такое, чтобы кнопочку отпустить:
PostMessage(h, WM_LBUTTONDOWN, 0 ,0);
PostMessage(h, WM_LBUTTONUP, 0, 0);
Button1->Enabled = false;
P.S. Ненадо оставлять как есть. Лучше сделать через задницу (как в моем примере :)), чем не сделать вообще.
applause:) Серъезно, если пашет (пусть пинают все) не трожь. Все остальное, для тех кто изголяются, А МЫ БАБКИ ЗАРОБАТЫВАЕМ. Хотя действительно, сделано через такую ЖОПУ !!!
applause:) Серъезно, если пашет (пусть пинают все) не трожь. Все остальное, для тех кто изголяются, А МЫ БАБКИ ЗАРОБАТЫВАЕМ. Хотя действительно, сделано через такую ЖОПУ !!!
Если кому интересно. Я нашёл баг. Почему-то если мы отсоединяем эту кнопку от соответствующего пункта меню всё работает. В обратном случае получается криво. Пришлось дублировать обработчик. И получилось вроде не сильно через жопу.
Если кому интересно. Я нашёл баг. Почему-то если мы отсоединяем эту кнопку от соответствующего пункта меню всё работает. В обратном случае получается криво. Пришлось дублировать обработчик. И получилось вроде не сильно через жопу.
Если она у тебя и к меню прикручена, то, наверное, стоит TActionList присобачить? Или так и было сделано?
Ну, а дублирования-то наверняка можно избежать...
По-моему лучше в runtime сделать присваивание
OnClick = NULL; и onClick=ОБРАБОТЧИК, чем дважды повторять код...
Если она у тебя и к меню прикручена, то, наверное, стоит TActionList присобачить? Или так и было сделано?
Ну, а дублирования-то наверняка можно избежать...
По-моему лучше в runtime сделать присваивание
OnClick = NULL; и onClick=ОБРАБОТЧИК, чем дважды повторять код...
Этот обработчик к TActionList не был приделан. Я по старой привычке пользую ActionList только для стандартный функций, а более сложные коды пихаю в функции. А их уже руками вызываю в обработчиках. Так потом отлаживать легче.
А дублирования строго говоря и нет, я просто функцию своял. И запихнул вызов в оба обработчика.