"Выпадающий" Label на форме

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Здравствуйте, Уважаемые.
Как-то видел в одном из проектов Excel такую "фишку".
На форме вверху расположен Label, видна только небольшая нижняя часть (полоска). При наведении курсора на эту полосу - "выезжает" вниз весь Label и находится в открытом положении, пока курсор в пределах этого объекта. При перемещении курсора за пределы объекта он, через некоторое время, опять скрывается вверх.
Кто нибудь знает как такое можно реализовать?
Спасибо.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

В дополнение:
нашел я эту программу - Atled Payment Master '99 ver 7.0
Выдернул код который делает то, о чем я писал выше (да простит меня автор - только для изучения). И вроде все получилось, но оказалось все не так просто.
Программа поставляется exe файлом apm81x97.exe и инсталируется в систему. В процессе установки прописывает специализированные библиотеки.
Так вот, на машине на которой эта АРМ устанавливалась пример работает как надо, даже после деинсталяции самой программы (качество деинсталяции:rolleyes :) , т.е. библиотеки остаются и все работает.
Когда же я, на радостях :) , запустил пример на другой машине, на которой не устанавливалась эта АРМ, сразу вылезла ошибка :confused: нет библиотек...
И вот вопрос - можно ли как-то с этим справиться?
p.s. Приложенный файл как раз и должен вызовать ошибку при запуске формы.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

VictorM, ну все такие вещи делаются практически одинаково.
Размещаете на форме таймер(скажем из VB6) и после обнаружения мыши в
определённой области начинаете прявлять и двигать анимируемый объект.
Но будут проблемы с лицензией. Так что наиболее правильно сделать это не
через контрол а с помощью WinAPI и callback. Пример здесь:
http://www.citforum.ru/programming/vb/v ... pi/8.shtml
Так же смотрите: http://www.tushar-mehta.com/excel/software/vba_timer/
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

А можно и без таймера обойтись. Одним sleep.
Посмотрите как отрисовываются ProgressMeter
http://www.andypope.info/vba/pmeter.htm
и вообще про рисование на пользовательских формах VBA
http://www.andypope.info/vba/userformdraw.htm
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Aent, большое спасибо за ссылки. Попытаюсь разобраться WinApi.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Получилось вот такое :rolleyes: (см. вложенный файл).
Как подсказал Aent, применил sleep.
Может что и не правильно, с точки зрения профессионала, но выполняется то, что я хотел :)
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

А вот это - то, ради чего все затевалось.
Выпадающий календарь от Avsha
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

&quot писал(а):А вот это - то, ради чего все затевалось.
Выпадающий календарь от Avsha
Прикольно! Новая игра: поймай календарик,..если сможешь. :p А он ещё и дразнится! :D
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Прикольно! Новая игра: поймай календарик,..если сможешь. А он ещё и дразнится!
не знаю, у меня все четко. :confused: При наведении курсора - выезжает вниз. Пока курсор в пределах изображения - находится на месте. А при перемещении курсора за пределы изображения - поднимается вверх.
А вообще-то я уже говорил, что это только пример выполнения задачи, поставленной в самом начале темы и ничего более.
Ответить