Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Залипание кнопки.

348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Проблема такая. При удалении последней записи из таблицы мне нужно чтобы-кнопка удаления(Toolbutton) стала disabled. Ну я и делаю в сабытии Afterscroll для неё enabled=false. Но она при этом почему-то залипает и не отходит назад, хотя её свойство down=false, т.е. она должна быть отжата. Repaint непомогает. Может кому такой баг попадался?
460
23 сентября 2003 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by Saris
Проблема такая. При удалении последней записи из таблицы мне нужно чтобы-кнопка удаления(Toolbutton) стала disabled. Ну я и делаю в сабытии Afterscroll для неё enabled=false. Но она при этом почему-то залипает и не отходит назад, хотя её свойство down=false, т.е. она должна быть отжата. Repaint непомогает. Может кому такой баг попадался?



1) А AfterDelete не лучше будет для отслеживания удалений?
2) Как связано enabled и down? При чем тут вообще свойство down? Или у тебя прога зависает?
3) Это не баг.

348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Berg


1) А AfterDelete не лучше будет для отслеживания удалений?
2) Как связано enabled и down? При чем тут вообще свойство down? Или у тебя прога зависает?
3) Это не баг.


Значит так:
1)Пустой рекордсет надо отслеживать не только при удалении. Хотя если такое написать в AfterDelete результат не меняется.
2)Никак, просто при пустом рекордсете нужно сделать недоступной кнопку удаления. А св-во down отражает состояние кнопки(нажата = true, не нажата = false). Прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой, и пока на неё ещё раз не нажмёшь такой и остаётся. При этом св-во down=false.
3) Может быть, но очень похоже.

460
23 сентября 2003 года
Berg
261 / / 27.03.2003
В чем проблема-то?
Пройдись дебаггером...Возникает или нет событие по AfterScroll после опустошения таблицы? Попадаем ли на строку SomeToolButton->enabled = false. Что потом?

"прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой"
Означает ли это, что кнопка становится-таки disabled, но при этом не становится !Down?
348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Berg
В чем проблема-то?
Пройдись дебаггером...Возникает или нет событие по AfterScroll после опустошения таблицы? Попадаем ли на строку SomeToolButton->enabled = false. Что потом?

"прога прекрасно работает за исключением того, что кнопка после нажатия остаётся выглядеть нажатой"
Означает ли это, что кнопка становится-таки disabled, но при этом не становится !Down?


Уже пробовал. Событие возникает, кнопка становаится disabled(серенькая такая :-)), но при этом так и остаётся выглядеть нажатой.

989
23 сентября 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Saris

Уже пробовал. Событие возникает, кнопка становаится disabled(серенькая такая :-)), но при этом так и остаётся выглядеть нажатой.


Tool buttons can remain Down only if Style is tbsCheck.

I think, you understand me:)

348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Vlad232ua

Tool buttons can remain Down only if Style is tbsCheck.

I think, you understand me:)


Yes of course. But Style is tbsButton. :D

460
23 сентября 2003 года
Berg
261 / / 27.03.2003
2Saris:
Слушай, если кнопка disabled и серенькая, то какая разница нажата она или нет?
Сделай чтоли
Down=false;
Enabled=false;

Т.е. измени down до disabled
348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Berg
2Saris:
Слушай, если кнопка disabled и серенькая, то какая разница нажата она или нет?
Сделай чтоли
Down=false;
Enabled=false;

Т.е. измени down до disabled


Уже пробовал и до и после не помогает. :( А разницы никакой, просто некрасиво, и тупой юзер, который будет пользовать программу может невзначай перепугаться:D. Вообщем если не получится исправить придётся оставить как есть :( .

989
23 сентября 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Saris

Yes of course. But Style is tbsButton. :D


Я к тому, что может стоит стиль поменять а потом пробовать поиграть с down.

348
23 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Vlad232ua

Я к тому, что может стоит стиль поменять а потом пробовать поиграть с down.


Эффект довольно схожий. Вообщем или руки у меня кривые или одно из двух...

989
23 сентября 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Saris

Эффект довольно схожий. Вообщем или руки у меня кривые или одно из двух...


Проблемс. Попробовал повторить ситуацию (правда без таблиц) насиловал - насиловал в различных ситуациях, пашет сучара, в чем у тебя проблема, трудно сказать. Может ты все-же прав и выцепил какой-то нестандартный глюк? Ну пашет, что tbsCheck что tbsButton все пашет. Но руки не кривые - это факт, смотри код, ищи нъюансы. Думал, последовательность Enable Desable влияет, по барабану (в моих примерах без разницы).
Код естественно сюда выкладывать, глупость, наверняка у тебя там сто пудов колючей проволоки.
В общем удачи, у меня работает, ищи глюк.

415
23 сентября 2003 года
SLA
274 / / 08.08.2003
Цитата:
Originally posted by Saris

...просто некрасиво, и тупой юзер, который будет пользовать программу может невзначай перепугаться:D. Вообщем если не получится исправить придётся оставить как есть :( .



Баг конечно нужно найти и истребить. А пока он не найден, чтобы не пугать вышеупомянутого юзера :), сделай что-нибудь такое, чтобы кнопочку отпустить:

 
Код:
HWND h = Button1->Handle;
PostMessage(h, WM_LBUTTONDOWN, 0 ,0);
PostMessage(h, WM_LBUTTONUP, 0, 0);
Button1->Enabled = false;


P.S. Ненадо оставлять как есть. Лучше сделать через задницу (как в моем примере :)), чем не сделать вообще.
989
23 сентября 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by SLA


Баг конечно нужно найти и истребить. А пока он не найден, чтобы не пугать вышеупомянутого юзера :), сделай что-нибудь такое, чтобы кнопочку отпустить:

 
Код:
HWND h = Button1->Handle;
PostMessage(h, WM_LBUTTONDOWN, 0 ,0);
PostMessage(h, WM_LBUTTONUP, 0, 0);
Button1->Enabled = false;


P.S. Ненадо оставлять как есть. Лучше сделать через задницу (как в моем примере :)), чем не сделать вообще.


applause:) Серъезно, если пашет (пусть пинают все) не трожь. Все остальное, для тех кто изголяются, А МЫ БАБКИ ЗАРОБАТЫВАЕМ. Хотя действительно, сделано через такую ЖОПУ !!!

348
24 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Vlad232ua

applause:) Серъезно, если пашет (пусть пинают все) не трожь. Все остальное, для тех кто изголяются, А МЫ БАБКИ ЗАРОБАТЫВАЕМ. Хотя действительно, сделано через такую ЖОПУ !!!


Если кому интересно. Я нашёл баг. Почему-то если мы отсоединяем эту кнопку от соответствующего пункта меню всё работает. В обратном случае получается криво. Пришлось дублировать обработчик. И получилось вроде не сильно через жопу.

460
24 сентября 2003 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by Saris

Если кому интересно. Я нашёл баг. Почему-то если мы отсоединяем эту кнопку от соответствующего пункта меню всё работает. В обратном случае получается криво. Пришлось дублировать обработчик. И получилось вроде не сильно через жопу.



Если она у тебя и к меню прикручена, то, наверное, стоит TActionList присобачить? Или так и было сделано?

Ну, а дублирования-то наверняка можно избежать...
По-моему лучше в runtime сделать присваивание
OnClick = NULL; и onClick=ОБРАБОТЧИК, чем дважды повторять код...

348
24 сентября 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by Berg


Если она у тебя и к меню прикручена, то, наверное, стоит TActionList присобачить? Или так и было сделано?

Ну, а дублирования-то наверняка можно избежать...
По-моему лучше в runtime сделать присваивание
OnClick = NULL; и onClick=ОБРАБОТЧИК, чем дважды повторять код...



Этот обработчик к TActionList не был приделан. Я по старой привычке пользую ActionList только для стандартный функций, а более сложные коды пихаю в функции. А их уже руками вызываю в обработчиках. Так потом отлаживать легче.

А дублирования строго говоря и нет, я просто функцию своял. И запихнул вызов в оба обработчика.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог