Перейти к содержимому

Фотография

DevExpress ListTree Control


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 58

#21 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 06 ноября 2007 - 23:11

Все равно мне кажется что надо как-то делать через [Nodes], хотя вы наверное быстрее меня разберетесь.


Через Nodes, так через Nodes :crazy:

...WinFormsObject("treeList1").Nodes.Item(0).SetValue(0, true);


Собственно, Genka был прав, но с некоторыми оговорками. У колонки с checkbox'ами (объект repositoryItemCheckEdit) есть следующие свойства:
ValueChecked, ValueGrayed и ValueUnchecked. В виду "навороченности" контрола, у этих свойств есть типы (по default'у стоит Bool, однако можно выбрать Numeric, DateTime, String, Decimal): то есть можно указать тип и его значение для любого положения флага. Например, если для ValueChecked указать:
Type - Numeric
Value - 11,
то для того, чтобы чекнуть checkbox, нужно у item'а вызвать метод SetValue(номер колонки, 11).

Кстати, можно использовать перегруженное свойство Nodes (nodes_2) для явного указания node'ы:

...WinFormsObject("treeList1").nodes_2(1).Item(0).SetValue(0, true);

  • 0

#22 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 06 ноября 2007 - 23:55

Все равно мне кажется что надо как-то делать через [Nodes], хотя вы наверное быстрее меня разберетесь.


Через Nodes, так через Nodes :crazy:

...WinFormsObject("treeList1").Nodes.Item(0).SetValue(0, true);


Собственно, Genka был прав, но с некоторыми оговорками. У колонки с checkbox'ами (объект repositoryItemCheckEdit) есть следующие свойства:
ValueChecked, ValueGrayed и ValueUnchecked.
...WinFormsObject("treeList1").nodes_2(1).Item(0).SetValue(0, true);


Доброй ночи :) насколько я помню, после дня ковыряние в этом контроле, я сомневаюсь, что у меня был объект repositoryItemCheckEdit. Завтра еще раз посмотрю внимательно.
Спасибо, за помощь. Напишу об результатах
  • 0

#23 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 07 ноября 2007 - 09:26

Собственно, Genka был прав, но с некоторыми оговорками.
<skipped>

...WinFormsObject("treeList1").nodes_2(1).Item(0).SetValue(0, true);


собвственно, я пробовал передавать булевские переменные тоже для SetValue. Это первое, что я попытался сделать. При этом приложение вылетало с эксепшеном, типа несоответствие типов, или как-то так. А вот с интеджер очень даже заработало.

Все это очень странно...
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#24 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 09:54

Доброй ночи :) насколько я помню, после дня ковыряние в этом контроле, я сомневаюсь, что у меня был объект repositoryItemCheckEdit. Завтра еще раз посмотрю внимательно.
Спасибо, за помощь. Напишу об результатах


Добрый день!
Поищи у формы в Fields что-то вроде "repositoryItemCheckEdit1" (класс DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit)
  • 0

#25 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 10:04

собвственно, я пробовал передавать булевские переменные тоже для SetValue. Это первое, что я попытался сделать. При этом приложение вылетало с эксепшеном, типа несоответствие типов, или как-то так. А вот с интеджер очень даже заработало.

Все это очень странно...


Ничего странного нет! Как я писал выше, всё зависит от типа, который используется для свойств ValueChecked, ValueGrayed и ValueUnchecked. В твоём случае в качестве типа использовался numeric. Это легко проверить: нужно найти объект repositoryItemCheckEdit и глянуть свойство, например, ValueChecked (какой класс используется в качестве типа, и какое значение этому типу соответствует).

Sys.Process("WindowsApplication1").WinFormsObject("Form1").repositoryItemCheckEdit1.ValueChecked.ClrFullClassName = System.Boolean
Sys.Process("WindowsApplication1").WinFormsObject("Form1").repositoryItemCheckEdit1.ValueChecked.OleValue = True

  • 0

#26 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 10:26

Все равно мне кажется что надо как-то делать через [Nodes], хотя вы наверное быстрее меня разберетесь.


Через Nodes, так через Nodes :crazy:

...WinFormsObject("treeList1").Nodes.Item(0).SetValue(0, true);


Собственно, Genka был прав, но с некоторыми оговорками. У колонки с checkbox'ами (объект repositoryItemCheckEdit) есть следующие свойства:
ValueChecked, ValueGrayed и ValueUnchecked. В виду "навороченности" контрола, у этих свойств есть типы (по default'у стоит Bool, однако можно выбрать Numeric, DateTime, String, Decimal): то есть можно указать тип и его значение для любого положения флага. Например, если для ValueChecked указать:
Type - Numeric
Value - 11,
то для того, чтобы чекнуть checkbox, нужно у item'а вызвать метод SetValue(номер колонки, 11).

Кстати, можно использовать перегруженное свойство Nodes (nodes_2) для явного указания node'ы:

...WinFormsObject("treeList1").nodes_2(1).Item(0).SetValue(0, true);


В общем я попробовал, все что мы тут обсуждали и обсуждаем.
У меня есть вот такой объект :
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](false);
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](true);

при таком раскладе TC почему делает Gray первый CheckBox (уже отмеченный изначально после открытия формы), а второй ставит галку. На вторую команду, он убирает галку со второго CheckBox'a и делает опять visible первый ?!? Не понимаю, почему он лезет во второй CheckBox.

Если делать так :
w3["Nodes"]["Item"](0)["SetValue"](0, false);
w3["Nodes"]["Item"](1)["SetValue"](1, false);

то вообще как и вчера ничего не происходит. Я уже не знаю чего делать :(((
  • 0

#27 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 10:39

...
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](false);
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](true);
....


Посмотри, есть ли у твоего RepositoryItems свойства (Properties): ValueChecked, ValueGrayed и ValueUnchecked. Если да, то смотри у них тип\значение (мой пример выше) и дальше работай через Nodes (попробуй nodes_2). Если нет, то это не тот объект. В этом случае лучше спросить у программеров имя объекта или пусть они создадут тестовую форму!
  • 0

#28 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 10:46

...
w3["Nodes"]["Item"](0)["SetValue"](0, false);
w3["Nodes"]["Item"](1)["SetValue"](1, false);
...


Не забудь, что в методе SetValue первое значение - индекс колонки с checkbox'ом! То есть, в первом примере ты указываешь, что у тебя колонка с checkbox'ом стоит первой, во втором случае - второй!
  • 0

#29 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 10:52

...
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](false);
w3["RepositoryItems"]["Item"](0)["set_ValueChecked"](true);
....


Посмотри, есть ли у твоего RepositoryItems свойства (Properties): ValueChecked, ValueGrayed и ValueUnchecked. Если да, то смотри у них тип\значение (мой пример выше) и дальше работай через Nodes (попробуй nodes_2). Если нет, то это не тот объект. В этом случае лучше спросить у программеров имя объекта или пусть они создадут тестовую форму!

Да такие есть свойства. Как мне тогда тип/значение поменять? Я не нашел подходящего метода, а через ObjectBrowser я сделать это не могу
  • 0

#30 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 10:56

...
w3["Nodes"]["Item"](0)["SetValue"](0, false);
w3["Nodes"]["Item"](1)["SetValue"](1, false);
...


Не забудь, что в методе SetValue первое значение - индекс колонки с checkbox'ом! То есть, в первом примере ты указываешь, что у тебя колонка с checkbox'ом стоит первой, во втором случае - второй!


не понял :) у меня по сути дела получается что первый chechkBox находится строго над вторым. МОжет надо писать типа Item(0) - первый сын дерева, и SetValue (0, ) - типа первая колонка, а потом Item(1) и SetValue(0, ). Блин..я уже потерялся в этих индексах...
  • 0

#31 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 11:00

Да такие есть свойства. Как мне тогда тип/значение поменять? Я не нашел подходящего метода, а через ObjectBrowser я сделать это не могу


Зайди в эти свойства и посмотри поля СlrFullClassName и OleValue. Ничего менять нельзя (да ты и не сможешь), тебе нужно просто узнать, какие типы и значения используются.
  • 0

#32 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 11:01

не понял :) у меня по сути дела получается что первый chechkBox находится строго над вторым. МОжет надо писать типа Item(0) - первый сын дерева, и SetValue (0, ) - типа первая колонка, а потом Item(1) и SetValue(0, ). Блин..я уже потерялся в этих индексах...


Выложи скрин своего дерева!
  • 0

#33 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 11:10

не понял :) у меня по сути дела получается что первый chechkBox находится строго над вторым. МОжет надо писать типа Item(0) - первый сын дерева, и SetValue (0, ) - типа первая колонка, а потом Item(1) и SetValue(0, ). Блин..я уже потерялся в этих индексах...


Выложи скрин своего дерева!


В свойствах у меня Boolean везде. И пишу я типа такого :
w3["Nodes"]["Item"](0)["SetValue"](0, true)
w3["Nodes"]["Item"](1)["SetValue"](0, true);
w3["Nodes"]["Item"](0)["SetValue"](0, false);

или так :
w3.nodes_2(0).Item(0).SetValue(0, false);
w3.nodes_2(1).Item(0).SetValue(0, true);

Вот такой у меня диалог...это простой самый. Будет сложнее...поэтому и хочется разобраться до конца почему ничего не выходит.

Прикрепленные файлы

  • Прикрепленный файл  1.JPG   10,57К   25 Количество загрузок:

  • 0

#34 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 11:21

В свойствах у меня Boolean везде. И пишу я типа такого :
w3["Nodes"]["Item"](0)["SetValue"](0, true)
w3["Nodes"]["Item"](1)["SetValue"](0, true);
w3["Nodes"]["Item"](0)["SetValue"](0, false);

или так :
w3.nodes_2(0).Item(0).SetValue(0, false);
w3.nodes_2(1).Item(0).SetValue(0, true);

Вот такой у меня диалог...это простой самый. Будет сложнее...поэтому и хочется разобраться до конца почему ничего не выходит.


Хм, судя по скрину, колонка с checkbox'ом у тебя первая (если нет "схайденых"), то есть индекс 0. Следовательно

w3["Nodes"]["Item"](0)["SetValue"](0, true)
w3["Nodes"]["Item"](0)["SetValue"](0, false);

для первой row должно работать. Выдели первую строку и глянь свойство
...Nodes.Item(0).Selected
(на всякий случай, должно быть True)
  • 0

#35 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 11:42

И ещё, найди колонку с checkbox'ами (у формы в Fields) и глянь свойство AbsoluteIndex
У меня это так:
Sys.Process("WindowsApplication1").WinFormsObject("Form1").treeListColumn1.AbsoluteIndex

  • 0

#36 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 11:56



w3["Nodes"]["Item"](0)["SetValue"](0, true)
w3["Nodes"]["Item"](0)["SetValue"](0, false);

для первой row должно работать. Выдели первую строку и глянь свойство
...Nodes.Item(0).Selected
(на всякий случай, должно быть True)

первая изначально выделена и значение True, а вот вторая, если делать w3.Nodes.Item(1) не выделяется...т.е. значение false
  • 0

#37 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 12:00

И ещё, найди колонку с checkbox'ами (у формы в Fields) и глянь свойство AbsoluteIndex
У меня это так:

Sys.Process("WindowsApplication1").WinFormsObject("Form1").treeListColumn1.AbsoluteIndex


Индекс как и надо - 0
  • 0

#38 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 12:09

первая изначально выделена и значение True, а вот вторая, если делать w3.Nodes.Item(1) не выделяется...т.е. значение false


Для того, чтобы выделить строку, нужно воспользоваться методом set_Selected(var bool):
...Nodes.Item(0).set_Selected(true)
- не проверял

Попробуй вместо метода SetValue использовать метод (на самом деле свойство) set_Item():
...Nodes.Item(0).set_Item(0, true);

  • 0

#39 Cirrus

Cirrus

    Новый участник

  • Members
  • Pip
  • 65 сообщений

Отправлено 07 ноября 2007 - 12:38

первая изначально выделена и значение True, а вот вторая, если делать w3.Nodes.Item(1) не выделяется...т.е. значение false


Для того, чтобы выделить строку, нужно воспользоваться методом set_Selected(var bool):
...Nodes.Item(0).set_Selected(true)
- не проверял

Попробуй вместо метода SetValue использовать метод (на самом деле свойство) set_Item():
...Nodes.Item(0).set_Item(0, true);

неа. Все выделятся...целиком, но ничего не чекается :(((( слушай, а может надо в самом TC в опциях что-нить специальное выставить ?!
  • 0

#40 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 07 ноября 2007 - 12:46

неа. Все выделятся...целиком, но ничего не чекается :(((( слушай, а может надо в самом TC в опциях что-нить специальное выставить ?!


А у тебя какой TC?
Предлагаю в 3-ий раз, пусть разработчики кинут это дерево на тестовую форму. Либо можешь мне кинуть часть кода (я так понимаю, C#). У меня что SetValue, что set_Item работают... нужно на твой конкретный пример смотреть!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных