Страница 1 из 1

компонент Microsoft ActiveX TreeView

СообщениеДобавлено: Пт янв 14, 2011 8:35 am
Eraser
Какими методами и свойствами управляется в рантайме Аctivex TreeView (просмотр своих элементов в виде дерева) ? Где можно глянуть примеры?
Ибо вставив этот объект в WinCC получили полный доступ ко всем его методам (через VBA), а вот в окне InTouch при вставке этого объекта многие методы не отображаются. Интересует заполнение вновь созданного ActiveX и получение индекса по выделенному узлу.

Re: компонент Microsoft ActiveX TreeView

СообщениеДобавлено: Пт янв 14, 2011 11:32 am
Klinkmann_Msk
Eraser писал(а):Какими методами и свойствами управляется в рантайме Аctivex TreeView (просмотр своих элементов в виде дерева) ? Где можно глянуть примеры?
Ибо вставив этот объект в WinCC получили полный доступ ко всем его методам (через VBA), а вот в окне InTouch при вставке этого объекта многие методы не отображаются. Интересует заполнение вновь созданного ActiveX и получение индекса по выделенному узлу.

О каком именно ActiveX идёт речь?
AlarmTreeViewer, TreeCtrl,... ?

СообщениеДобавлено: Вт янв 18, 2011 6:08 am
Eraser
Microsoft TreeCtrl 6.0

СообщениеДобавлено: Ср янв 19, 2011 7:39 am
Klinkmann_Msk
Здесь была ерунда...

СообщениеДобавлено: Чт янв 20, 2011 1:33 pm
misha_os
Хотелось бы узнать, есть ли решение по заполнению ActiveX Microsoft TreeCtrl 6.0 в InTouch?

СообщениеДобавлено: Пт янв 21, 2011 5:24 am
Klinkmann_Msk
misha_os писал(а):Хотелось бы узнать, есть ли решение по заполнению ActiveX Microsoft TreeCtrl 6.0 в InTouch?

Ни примеров, ни описаний в доке не нашёл.

Re: компонент Microsoft ActiveX TreeView

СообщениеДобавлено: Пн окт 10, 2011 6:38 pm
SharkBrain
Так же очень актуальна тема возможности использования Microsoft TreeView Control в InTouch. Любые вариации заполнения дерева (Nodes.Add) выдают ошибки. К сожалению ни в сети, ни на данном сайте ответа нет. :(

Re: компонент Microsoft ActiveX TreeView

СообщениеДобавлено: Вт окт 11, 2011 7:12 pm
Basilio
You have to check the MSDN documentation for the TreeControl. However, you may not be able to get the Nodes collection object to work properly since InTouch ActiveX container does not support parameterized properties. You may have to create a wrapper control that encapsulates an instance of a TreeControl and possibly an ImageList control

Since you are using InTouch 10, then another option is to embed the .Net Control TreeView. I tested it and it works. Here are the steps for how to do this.

- In the IDE do Galaxy/Import/Client Control

- Select C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll

- Create a new Archestra Graphic

- Embed Graphic and select the .Net Control TreeView

- Add a button and add a Action Script to that button with this script:

TreeView1.Nodes.add("test1");

- Add this new Archestra Graphic to a managed or published app InTouch window

- When you press the button in WindowViewer then the Tree View gets populated with "test1".

Re: компонент Microsoft ActiveX TreeView

СообщениеДобавлено: Чт окт 13, 2011 5:21 pm
LexSL
Я тоже пробовал импортировать библиотеку контролов в IDE, добавлять TreeView в свой графический элемент, заполнять у него коллекцию Items и вставлять его в InTouch. во только он не сохраняет свою коллекцию и в окне Интача айтемы не появляются.
Получилось сделать вот как (правда он не AciveX :) ):
1. создал свой userControl в VisualStudio (пользовался C#, так как думал чтобы по-быстрее проверить, можно в принципе и на С++)
2. кинул на холст TreeView, добавил ему в коллекцию несколько айтемов, например :
а. Окно1
б. Окно2
в. Окно3
Свойство Name у этих айтемов дал осмысленные (Window1, Window2, Window3)
4. Добавил public событие и делегат этого события:

Код: Выделить всё
public delegate void TreeNodeClickHandler(object sender, TreeNodeMouseClickEventArgs e);

public event TreeNodeClickHandler TreeNodeClick;

5. В TreeView (который на форме) для события NodeMouseClick вызываю объявленное public событие:

Код: Выделить всё
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
        Console.Beep();
         //Вызываем public событие если оно не пустое
            if (TreeNodeClick != null)
            {
                TreeNodeClick.Invoke(this, e);
            }
         }

Ну и все, в принципе, компилите, получившуюся dll импортируете в IDE, добавляете в свой символ этот userControl, два раза по нему кликаете и ищете в списке событий своё public событие (TreeNodeClick) и можно получить доступ к тому Item, по которому произошел "клик" мышой (через TreeNodeMouseClickEventArgs e). Например:
Код: Выделить всё
DIM NodeName AS Message;
NodeName = e.Node.Name;
IF NodeName == "Window1" THEN
ShowWindowName= "Главный экран";
ENDIF;
IF NodeName == "Window2" THEN
ShowWindowName= "Таблица";
ENDIF;
ShowWindowTrigger = 1;

ShowWindowName и ShowWindowTrigger - это CustomProperties String и Boolean соответственно, привязаны к тегам Интача (InTouch:ShowWindowName и InTouch:ShowWindowTrigger). На ShowWindowTrigger повешен Condition скрипт OnTrue:
Код: Выделить всё
Show ShowWindowName;
ShowWindowTrigger = 0;

В результате по клику мышкой на Item c именем Окно1 (Name = Window1) откроется окно InTouch "Главный экран".