Таймер на MsgBox

Автор OOKapitan, 30 января 2018, 17:18

0 Пользователи и 1 гость просматривают эту тему.

OOKapitan

     И снова здравствуйте  ;D .
    Нашёл для Экселя, но не могу для Calcа. Что написать в коде MsgBox отсюда:
http://forumooo.ru/index.php/topic,6935.15/msg,44916.html  , чтобы в этом MsgBox светилось возле кнопки "Нет" количество секунд, уменьшающееся до нуля (обратный отсчёт) и по истечению этого времени нажималась кнопка "Нет"? Ну для примера пусть количество секунд будет 30 и пусть оно ежесекундно уменьшается пока не дойдёт до нуля, а затем нажимается кнопка "Нет". Помогите, пожалуйста.

rami

Цитата: OOKapitan от 30 января 2018, 15:18Нашёл для Экселя, но не могу для Calcа. Что написать в коде MsgBox отсюда:  ...  , чтобы в этом MsgBox светилось возле кнопки "Нет" количество секунд, уменьшающееся до нуля (обратный отсчёт) и по истечению этого времени нажималась кнопка "Нет"? Ну для примера пусть количество секунд будет 30 и пусть оно ежесекундно уменьшается пока не дойдёт до нуля, а затем нажимается кнопка "Нет".
MsgBox — это отлитый в граните диалог, и ковыряться в его потрохах никому не позволено ;D. Вызванный MsgBox или другой диалог блокирует выполнение программы (или отсчёт времени) до его завершения.

bigor

Цитата: OOKapitan от 30 января 2018, 15:18Нашёл для Экселя, но не могу для Calcа.
Что-то не помню, что бы в  vba можно было в msgbox отсчет делать.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

JohnSUN

Можно. Через одно место... В смысле через системную функцию. В user32 есть MessageBoxTimeoutA - описываешь её через Declare и используешь вместо стандартного MsgBox.

А в этих офисах можно было бы использовать возможности BeanShell - пример такого таймера как-то выкладывал ms777 (Google должен помнить где и когда это было).

Но без описания задачи браться за реализацию не хочется
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

Цитата: JohnSUN от 30 января 2018, 19:22
А в этих офисах можно было бы использовать возможности BeanShell - пример такого таймера как-то выкладывал ms777 (Google должен помнить где и когда это было).

На всякий случай - вот ещё одна реализация изменённого MessageBox (всё это никак не опровергает слова о том, что MsgBox высечен в камне - это всё же другая реализация).
С уважением,
Михаил Каганский

OOKapitan

     Всем большое спасибо.

OOKapitan

А может можно сделать тогда без написания секунд? Ну то есть, обычный MsgBox, но если в течение 30 секунд не нажата ни одна клавиша он закрывается (или нажимается клавиша "Отмена" на трёхкнопочном MsgBox с клавишами "Да", "Нет" и "отмена")?

rami

Проблема не в написании секунд, а в том, что вызванный MsgBox блокирует выполнение кода, пока он не закроется после нажатия на любую кнопку.

OOKapitan

Цитата: rami от 31 января 2018, 12:31блокирует выполнение кода, пока он не закроется после нажатия на любую кнопку
Но можно же заставить другой макрос вызвать MsgBox и контролировать время его нажатия? Или этот другой макрос тоже будет заблокирован? Но если так, - неужели нет никаких костыльных вариантов?

bigor

Смирись :)
Выше mikekaganski дал ссылку на самописный MessageBox, посмотри, в нем только добавили возможность раскрашивать надписи. Вспомнили так же и самописный MessageBox, который был с таймером, но ресурс на который ссылается гугл уже не доступен.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от 31 января 2018, 12:54mikekaganski дал ссылку на самописный MessageBox, посмотри, в нем только добавили возможность раскрашивать надписи
Смотрел, но ни черта не понял. Где там указан таймер?

bigor

Там нет таймера, там только с шрифтами играться можно. Просто оцени сложность и реши надо тебе это или нет. С таймером я не нашел, пишет что ресурс не доступен.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

rami

Таймера там нет потому, что я его раньше вывинтил и завинтил вот сюда:

bigor

Так просто  ??? И без резьбы по камню :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: rami от 31 января 2018, 14:18аймера там нет потому, что я его раньше вывинтил и завинтил вот сюда:
Так это же аналог MsgBox! Круто! Только не совсем понимаю, куда вписать свои условия для кнопок "Да", "Нет", "Закрыть"? Вместо dlg.dispose() или как?