Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

GraphWorX (VBA и полосы прокрутки)

 Ответить Ответить
Автор
Сообщение
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: GraphWorX (VBA и полосы прокрутки)
    Опубликовано: 29 Апрель 2010 13:42

Добрый день!

Работаю с GraphWorX.

Хочу с помощью скрипта VBA отображать/скрывать горизонтальную и вертикальную полосы прокрутки окна по определенному событию.

У компонента GWXView32 есть такие свойства как HorizontalScrollbar и VerticalScrollbar. 

Но я не знаю, как получить указатель на компонент GWXView32, чтобы управлять его свойствами.

Как получить указатель на GWXView32 в скрипте VBA?

Наверх
misha Смотреть выпадающим
Новичок
Новичок


Присоединился: 04 Февраль 2009
Online Status: Offline
Публикации: 26
Свойства публикации Свойства публикации   Ответить, цитируя автора - misha Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Май 2010 21:39
Как вариант, на экране можно создать кнопку, отображающую/скрывающую полосы прокрутки (есть в стандартных действиях меню), а в скрипте VBA управлять этой кнопкой.
Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Май 2010 17:15

я не нашел в стандартных действиях меню пункта с возможностью отображения/скрывания полос прокруток.

Где это? Расскажите об этом подробнее, пожалуйста.
Наверх
misha Смотреть выпадающим
Новичок
Новичок


Присоединился: 04 Февраль 2009
Online Status: Offline
Публикации: 26
Свойства публикации Свойства публикации   Ответить, цитируя автора - misha Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 18 Май 2010 19:29
Под рукой нет локализованной версии, так что все по английски:

Нужно создать на экране кнопку. В свойствах кнопки на вкладке "Pick":

Action: Runtime Menu
Mouse: Left Button
Select Action: View - Togle Scrollbars (или Horizontal Scrollbar, Vertical Scrollbar)
Object Name: ScrollHideButton

/////////
VBA:

    Dim objScrollHide As GwxPick
    Set objScrollHide = ThisDisplay.GetDynamicObjectFromName("ScrollHideButton")
    objScrollHide.SimulateClick MouseButtonLeft
/////////
Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Май 2010 14:09

Все работает. Такой вариант вполне устраивает меня.

Спасибо.
Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Май 2010 16:16
Все же вопрос остается актуальным
Внутри экрана display1.gdf я добавляю компонент GWXView32. В свойствах компонента GWXView32 указываю имя экрана "display2.gdf". Беда в том, что display2.gdf обязательно должен быть без поддержки VBA. Вышеописанное решение с кнопкой подойдет для display1.gdf, но мне нужно управлять прокруткой экрана display2.gdf.
 
Поэтому получается следующее: нужно в скрипте экрана display1.gdf получить указатель на компонент GWXView32 и затем включать/отключать  его полосы прокрутки.

Как получить указатель на GWXView32 в скрипте VBA?

Наверх
DubAlex Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 28 Февраль 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 212
Свойства публикации Свойства публикации   Ответить, цитируя автора - DubAlex Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Май 2010 17:19

Под конец рабочего дня(недели) наступило озарение:

Ка только я добавил компонент GWXView32 на экран display1.gdf, то сразу в редакторе VBA (alt+F11) появился новый объект GWXview321.
 
С ним и надо было работать:

Private Sub GWXview321_DisplayMouseDblClick(ByVal Button As Long, ByVal Shift As Long, ByVal X As Single, ByVal Y As Single, CancelProcessing As Variant)
If GWXview321.HorizontalScrollbar = True Then
    GWXview321.HorizontalScrollbar = False
Else
    GWXview321.HorizontalScrollbar = True
End If
If GWXview321.VerticalScrollbar = False Then
    GWXview321.VerticalScrollbar = True
Else
    GWXview321.VerticalScrollbar = False
End If
End Sub
 
Плюс к этому в свойствах добавленного на экран компонента GWXView32 нужно поставить галочку напротив пункта "override scrollbar settings"
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz