Страницы: 1 2 След.
RSS
выделение областей картинки.
 
есть план этажа многоквартирного дома. Затащен на отдельный лист в виде image.  
надо на нем подсвечивать определенные квартиры в зависимости от условий.  
желательны и мигающие указатели.
 
есть план этажа многоквартирного дома. Затащен на отдельный лист в виде image.  
надо на нем подсвечивать определенные квартиры в зависимости от условий.  
желательны и мигающие указатели.
 
ну что, неужели никто никогда не занимался этим? :)  
я пока думаю в сторону автофигур..
 
ну что, неужели никто никогда не занимался этим? :)  
я пока думаю в сторону автофигур..
 
{quote}{login=слэн}{date=06.03.2008 11:54}{thema=выделение областей картинки.}{post}есть план этажа многоквартирного дома. Затащен на отдельный лист в виде image.  
надо на нем подсвечивать определенные квартиры в зависимости от условий.  
желательны и мигающие указатели.{/post}{/quote}  
---  
Если вопрос еще актуален, то можно так:  
1. Рисунок плана дома поместить в объект, реагирующий на события MouseMove, MouseDown и т.п., например, поместить в объект Image. На картинку наложить графические фрагменты (Image или автофигуры), которые должны всплывать, мигать и т.п., установив их свойство Visible=False или прозрачность в максимум или поместить на хадний план.  
2. Наложить на картинку условную координатную сетку с шагом, достаточно малым для выделения объектов (квартир). В реализации это может быть просто массив координат и размеров (по рисунку) анимируемых квартир.  
3. По координатам X, Y события MouseMove и/или MouseDown что-то делать: например, отображать наложенные картинки квартир,  устанавливая их свойства Visible=True при наведении, и Visible=False при координатах X,Y вне фрагмента квартиры. Или мигать этими фрагментами. Для автофигур можно играться прозрачностью или порядком расположения (передний, задний план).  
 
Вместо координатной сетки иногда удобнее располагать объекты Label c Visible=False, которые тоже реагируют на события (Click). Но в этом случае могут возникнуть проблемы с определением того, что мышь ушла с Label.  
---  
ZVI
 
{quote}{login=слэн}{date=06.03.2008 11:54}{thema=выделение областей картинки.}{post}есть план этажа многоквартирного дома. Затащен на отдельный лист в виде image.  
надо на нем подсвечивать определенные квартиры в зависимости от условий.  
желательны и мигающие указатели.{/post}{/quote}  
---  
Если вопрос еще актуален, то можно так:  
1. Рисунок плана дома поместить в объект, реагирующий на события MouseMove, MouseDown и т.п., например, поместить в объект Image. На картинку наложить графические фрагменты (Image или автофигуры), которые должны всплывать, мигать и т.п., установив их свойство Visible=False или прозрачность в максимум или поместить на хадний план.  
2. Наложить на картинку условную координатную сетку с шагом, достаточно малым для выделения объектов (квартир). В реализации это может быть просто массив координат и размеров (по рисунку) анимируемых квартир.  
3. По координатам X, Y события MouseMove и/или MouseDown что-то делать: например, отображать наложенные картинки квартир,  устанавливая их свойства Visible=True при наведении, и Visible=False при координатах X,Y вне фрагмента квартиры. Или мигать этими фрагментами. Для автофигур можно играться прозрачностью или порядком расположения (передний, задний план).  
 
Вместо координатной сетки иногда удобнее располагать объекты Label c Visible=False, которые тоже реагируют на события (Click). Но в этом случае могут возникнуть проблемы с определением того, что мышь ушла с Label.  
---  
ZVI
 
спасибо. уже решил с автофигурами(прозрачность 70-80 обеспечивает выделение цветом, цвет от прозрачного до нужного - мигание,реакция на клик - гиперссылка).  
немножко не устраивает мигание - делал через ontime - минимальный интервал 1сек, что многовато..
 
спасибо. уже решил с автофигурами(прозрачность 70-80 обеспечивает выделение цветом, цвет от прозрачного до нужного - мигание,реакция на клик - гиперссылка).  
немножко не устраивает мигание - делал через ontime - минимальный интервал 1сек, что многовато..
 
{quote}{login=слэн}{date=07.03.2008 09:46}{thema=}{post}спасибо. уже решил с автофигурами(прозрачность 70-80 обеспечивает выделение цветом, цвет от прозрачного до нужного - мигание,реакция на клик - гиперссылка).  
немножко не устраивает мигание - делал через ontime - минимальный интервал 1сек, что многовато..{/post}{/quote}Я  делал в ontime и сотую секунды, но ёксель при этом почти не доступен. Можно и еще меньше :)  
делается ввод меньше секунды просто: копируем ячейку числом 100, выбираем ячейку с форматом времени и значением 1 секунда - спец вставка - значения - разделить, получаем сотую секунды, используем значение ячейки в ВБА
 
{quote}{login=слэн}{date=07.03.2008 09:46}{thema=}{post}спасибо. уже решил с автофигурами(прозрачность 70-80 обеспечивает выделение цветом, цвет от прозрачного до нужного - мигание,реакция на клик - гиперссылка).  
немножко не устраивает мигание - делал через ontime - минимальный интервал 1сек, что многовато..{/post}{/quote}Я  делал в ontime и сотую секунды, но ёксель при этом почти не доступен. Можно и еще меньше :)  
делается ввод меньше секунды просто: копируем ячейку числом 100, выбираем ячейку с форматом времени и значением 1 секунда - спец вставка - значения - разделить, получаем сотую секунды, используем значение ячейки в ВБА
 
Ну и чтобы увидеть в ячейке эту сотую используем формат ч:мм:сс.000  
десятитысячные уже не отображает, но работает.
 
Ну и чтобы увидеть в ячейке эту сотую используем формат ч:мм:сс.000  
десятитысячные уже не отображает, но работает.
 
во!  
 
я что-то уперся в timevalue..  а разделить на что-либо не попытался.  
 
спасибо.
 
во!  
 
я что-то уперся в timevalue..  а разделить на что-либо не попытался.  
 
спасибо.
 
неее..  
ооно(ontime) само округляет..    
 
до 0,5 как ноль, после - как 1  
 
так чте не получилось
 
неее..  
ооно(ontime) само округляет..    
 
до 0,5 как ноль, после - как 1  
 
так чте не получилось
 
Не округляет.  
Просто надо значение из ячейки брать.  
см. файл  
В нем обрати внимание ячейку "текущее время" и поиграй с промежутком обновления.
 
Не округляет.  
Просто надо значение из ячейки брать.  
см. файл  
В нем обрати внимание ячейку "текущее время" и поиграй с промежутком обновления.
 
округляет  
попробуй поставь ,5 и ,6 - увидишь резкую разницу.  
причем при ,5 он округляет то вверх, то вниз - поэтому можно еще подставлять значение прямо во время работы макроса, а при ,4 уже всегда вниз и на клавиши не реагирует.  
зато при ,6 фиг поймаешь на ctrl-break - приходится переходить в VBE  и ставить break point :)
 
округляет  
попробуй поставь ,5 и ,6 - увидишь резкую разницу.  
причем при ,5 он округляет то вверх, то вниз - поэтому можно еще подставлять значение прямо во время работы макроса, а при ,4 уже всегда вниз и на клавиши не реагирует.  
зато при ,6 фиг поймаешь на ctrl-break - приходится переходить в VBE  и ставить break point :)
 
Да, блин, именно OnTime округляет.  
При записи now в ячейку это видно.  
Но при пересчете листа видно как в ТДАТА() меняются десятые и сотые.  
А мигает скверно. Может несколько цветов попробовать?
 
Да, блин, именно OnTime округляет.  
При записи now в ячейку это видно.  
Но при пересчете листа видно как в ТДАТА() меняются десятые и сотые.  
А мигает скверно. Может несколько цветов попробовать?
 
мож попробовать с системным таймером?..
 
мож попробовать с системным таймером?..
 
{quote}{login=слэн}{date=08.03.2008 01:17}{thema=}{post}мож попробовать с системным таймером?..{/post}{/quote}  
 
может попытаться использовать несколько ontime -ов  
а их запуск осуществлять с програмной задержкой соответсвующей требуемой частоте мигания???????
 
{quote}{login=слэн}{date=08.03.2008 01:17}{thema=}{post}мож попробовать с системным таймером?..{/post}{/quote}  
 
может попытаться использовать несколько ontime -ов  
а их запуск осуществлять с програмной задержкой соответсвующей требуемой частоте мигания???????
 
{quote}{login=DL}{date=11.03.2008 08:32}{thema=Re: }{post}{quote}{login=слэн}{date=08.03.2008 01:17}{thema=}{post}мож попробовать с системным таймером?..{/post}{/quote}  
 
может попытаться использовать несколько ontime -ов  
а их запуск осуществлять с програмной задержкой соответсвующей требуемой частоте мигания???????{/post}{/quote}Мне кажется, что не прокатит. Онтайм запустит макрос в целое количество секунд, даже если сама команда ОнТайм прошла в дробное.
 
{quote}{login=DL}{date=11.03.2008 08:32}{thema=Re: }{post}{quote}{login=слэн}{date=08.03.2008 01:17}{thema=}{post}мож попробовать с системным таймером?..{/post}{/quote}  
 
может попытаться использовать несколько ontime -ов  
а их запуск осуществлять с програмной задержкой соответсвующей требуемой частоте мигания???????{/post}{/quote}Мне кажется, что не прокатит. Онтайм запустит макрос в целое количество секунд, даже если сама команда ОнТайм прошла в дробное.
 
Может это наведет на идеи:  
 
 
Для того, чтобы определить сколько милисекунд прошло с момента запуска Windows, достаточно воспользоваться нижеприведённой функцией WinAPI    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Private Sub GetMilliSeconds()    
   MsgBox "С момента запуска Windows прошло : " & _    
   GetTickCount & " милисекунд", , ""    
End Sub  
Данная функция может быть полезна, например, при точном определении времени выполнения макроса, т.е. в тех случаях, когда округление до секунды, нежелательно.    
 
Если Вы хотите вызвать эту функцию из ячеек рабочего листа, то в MS Excel 97 для этого можно использовать, например, функцию рабочего листа =ВЫЗВАТЬ()    
В следующих же версиях, вызов этой функции из ячеек листа заблокирован разработчиками, поэтому, Вам, по всей видимости, придётся воспользоваться пользовательской функцией, например =GetTickMilliSecond()    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Function GetTickMilliSecond&()    
   Application.Volatile True    
   GetTickMilliSecond& = GetTickCount    
End Function  
 
 
Для того, чтобы определить сколько милисекунд выполнялся необходимый макрос, достаточно воспользоваться нижеприведённой функцией WinAPI    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Private Sub YourMacro()    
   iMlSeconds& = GetTickCount    
 
   'Здесь должен быть код Вашей программы.    
 
   MsgBox "Время выполнения макроса составило " & _    
   GetTickCount - iMlSeconds& & " милисек.", vbExclamation, ""    
End Sub
 
Может это наведет на идеи:  
 
 
Для того, чтобы определить сколько милисекунд прошло с момента запуска Windows, достаточно воспользоваться нижеприведённой функцией WinAPI    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Private Sub GetMilliSeconds()    
   MsgBox "С момента запуска Windows прошло : " & _    
   GetTickCount & " милисекунд", , ""    
End Sub  
Данная функция может быть полезна, например, при точном определении времени выполнения макроса, т.е. в тех случаях, когда округление до секунды, нежелательно.    
 
Если Вы хотите вызвать эту функцию из ячеек рабочего листа, то в MS Excel 97 для этого можно использовать, например, функцию рабочего листа =ВЫЗВАТЬ()    
В следующих же версиях, вызов этой функции из ячеек листа заблокирован разработчиками, поэтому, Вам, по всей видимости, придётся воспользоваться пользовательской функцией, например =GetTickMilliSecond()    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Function GetTickMilliSecond&()    
   Application.Volatile True    
   GetTickMilliSecond& = GetTickCount    
End Function  
 
 
Для того, чтобы определить сколько милисекунд выполнялся необходимый макрос, достаточно воспользоваться нижеприведённой функцией WinAPI    
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long    
 
Private Sub YourMacro()    
   iMlSeconds& = GetTickCount    
 
   'Здесь должен быть код Вашей программы.    
 
   MsgBox "Время выполнения макроса составило " & _    
   GetTickCount - iMlSeconds& & " милисек.", vbExclamation, ""    
End Sub
Страницы: 1 2 След.
Читают тему
Наверх