ComboBox
#1
Отправлено 14 мая 2008 - 14:12
При нажатии checkbox-a Extended в ComboBox-e этот ComboBox становицо extended,но в Силктесте для ComboBox-ов не прописано свойство blsExtend(как например для ListBox и других обьектов) которое проверяет если контрол стал Extended.
Мне нужно выполнить такую проверку...
Заранее спасибо
#2
Отправлено 14 мая 2008 - 15:33
Проверка подобного состояния действительно отсутствует у ComboBox. Более того, и у реального оконного класса, который используется для програмной реализации комбо-бокса, подобного атрибута нет. На самом деле, комбобокс трансформируется в некоторый модифицированный класс, совмещающий в себе функционал лист-бокса. Как вариант, попробуйте финт, наподобие:Люди...помогите может у вас есть идеи или вы это делали...
При нажатии checkbox-a Extended в ComboBox-e этот ComboBox становицо extended,но в Силктесте для ComboBox-ов не прописано свойство blsExtend(как например для ListBox и других обьектов) которое проверяет если контрол стал Extended.
Мне нужно выполнить такую проверку...
Заранее спасибо
Допустим, у нас есть комбобокс, который описан в виде:
ComboBox TestCombo
tag "MyCombo"
Для того, чтобы выполнить нечто наподобие
TestCombo.IsExtendSel()мы делаем
ListBox( "[ComboBox]MyCombo" ).IsExtendSel()То есть, реально обращение идет к комбо-боксу (тег ссылается на него), но методы и свойства используются у класса ListBox, который содержит нужную нам проверку.
Попробуйте так, не обещаю, что сработает, но может помочь
#3
Отправлено 15 мая 2008 - 06:48
Но я вчера сидела сидела и сделала всетаки вот как
[ ] i = GetWindowLongW( .TheComboBox.hWnd , CBS_SIMPLE ) //hWnd-property,the internal handle of a
window.Возвращает дескриптор данного окна
[-] if( ( i & CBS_SIMPLE) ) // CBS_SIMPLE-константа ComboBox отображающая его простой(обычный) стиль
[ ] Error("The Combo box is not of extended type")
[ ] .Extended.bValue = TRUE // bValue- property shows the state of the chechox
&-логическое И,здесь проверяет на вхождение CBS_SIMPLE в маску стиля,т.е. проверяем если после нажатия Extended элемент ComboBox остался простым или изменился.Вроде работает )))))))
#4
Отправлено 15 мая 2008 - 07:01
lsValue = .View.lsContents
for i = 1 to ListCount(lsValue)
.View.sValue = lsValue[i]
switch( lsValue[i] )
case "Icon" iValue = LVV_ICON
case "Small icon"
iValue = LVV_SMALL_ICON
case "List"
iValue = LVV_LIST
case "Details"
iValue = LVV_DETAILS
if( .TheListView.GetView() != iValue ) // GetView-returns the name of the current view of the listview.
Error("Incorrect view mode for List View. Expected: {lsValue[i]}. Actual: {.TheListView.GetView()}")
так вот когда я добавила проверку какое значение приобретает .TheListView.GetView() оказалось что какой бы вид не был выбран он считывает его как LVV_ICON. И я не знаю либо я что-то не так написала либо метод GetView как то не атк работает....
ПОДСКАЖИТЕ
#5
Отправлено 15 мая 2008 - 07:05
CBS_SIMPLE - отвечает за отображение комбобокса в виде списка, из которого можно выбрать элементы либо можно ввести текст. Этот стиль противоположен CBS_DROPDOWN, когда комбо-бокс содержит выпадающий список. В принципе, если вот так, как вы написали, работает - это уже хорошо, так как в реале Extended стиль для комбо-бокса не предусмотрен. При таком режиме отображения комбо-бокс меняет свою структуру, но СилкТест этого не отлавиливает, не делает различийПасипа....вариант хороший....
Но я вчера сидела сидела и сделала всетаки вот как
[ ] i = GetWindowLongW( .TheComboBox.hWnd , CBS_SIMPLE ) //hWnd-property,the internal handle of a
window.Возвращает дескриптор данного окна
[-] if( ( i & CBS_SIMPLE) ) // CBS_SIMPLE-константа ComboBox отображающая его простой(обычный) стиль
[ ] Error("The Combo box is not of extended type")
[ ] .Extended.bValue = TRUE // bValue- property shows the state of the chechox
&-логическое И,здесь проверяет на вхождение CBS_SIMPLE в маску стиля,т.е. проверяем если после нажатия Extended элемент ComboBox остался простым или изменился.Вроде работает )))))))
#6
Отправлено 15 мая 2008 - 07:29
А с форматированием там все в порядке? В том примере, из которого это взято, было вот такНо теперь у меня другая проблема ...уже с ListView,у меня есть секция View с радио баттонами которые надо поочереди покликать и проверить как меняецо вид ListView,т.е. иконки,список,маленькие иконки,детальный список.Вот так это выглядит у меня....
lsValue = .View.lsContents
for i = 1 to ListCount(lsValue)
.View.sValue = lsValue[i]
switch( lsValue[i] )
case "Icon" iValue = LVV_ICON
case "Small icon"
iValue = LVV_SMALL_ICON
case "List"
iValue = LVV_LIST
case "Details"
iValue = LVV_DETAILS
if( .TheListView.GetView() != iValue ) // GetView-returns the name of the current view of the listview.
Error("Incorrect view mode for List View. Expected: {lsValue[i]}. Actual: {.TheListView.GetView()}")
так вот когда я добавила проверку какое значение приобретает .TheListView.GetView() оказалось что какой бы вид не был выбран он считывает его как LVV_ICON. И я не знаю либо я что-то не так написала либо метод GetView как то не атк работает....
ПОДСКАЖИТЕ
[ ] lsValue = .rlstView.lsContents [+] for i = 1 to ListCount(lsValue) [ ] .rlstView.sValue = lsValue[i] [+] switch( lsValue[i] ) [+] case "Icon" [ ] iValue = LVV_ICON [+] case "Small icon" [ ] iValue = LVV_SMALL_ICON [+] case "List" [ ] iValue = LVV_LIST [+] case "Details" [ ] iValue = LVV_DETAILS [ ] [+] if( .lstTheListView.GetView() != iValue ) [ ] Error("Incorrect view mode for List View. Expected: {lsValue[i]}. Actual: {.lstTheListView.GetView()}")Этот пример работал корректно. Вполне допустимо, что проблема возникает, если скрипт слишком быстро работает и измененный статус еще не проявился. Можно попробовать поставить sleep(1) сразу после выбора элемента в радио-листе. Если проблема в быстрой работе, то это реально может помочь
#7
Отправлено 15 мая 2008 - 08:00
Этот пример работал корректно. Вполне допустимо, что проблема возникает, если скрипт слишком быстро работает и измененный статус еще не проявился. Можно попробовать поставить sleep(1) сразу после выбора элемента в радио-листе. Если проблема в быстрой работе, то это реально может помочь
Да с форматированием все нормуль,это я так коряво сюда принесла.А sleep не помог.Я вот еще думаю может ли быть проблема в том что у меня Виста?
#8
Отправлено 15 мая 2008 - 08:24
Вполне возможно, что это из-за Висты. Пример разрабатывался на ХР и на старой версии СилкТеста ( 6.5 ). Да и было это 2 года назад, так что за это время многое могло поменяться. Кстати, а используемая вами версия СилкТеста поддерживает работу с Вистой? Это можно посмотреть в Release Notes а разделе системных требованийДа с форматированием все нормуль,это я так коряво сюда принесла.А sleep не помог.Я вот еще думаю может ли быть проблема в том что у меня Виста?
#9
Отправлено 15 мая 2008 - 08:44
Вполне возможно, что это из-за Висты. Пример разрабатывался на ХР и на старой версии СилкТеста ( 6.5 ). Да и было это 2 года назад, так что за это время многое могло поменяться. Кстати, а используемая вами версия СилкТеста поддерживает работу с Вистой? Это можно посмотреть в Release Notes а разделе системных требований
у нас вроде версия 8.5 мы раньше в нете смарели на сайте разработчика и писалось что поддерживает и в разделе хэлпа тоже пишет.....
#10
Отправлено 21 мая 2008 - 15:51
Мы столнулись с тем, что программист может "вручную" менять вид контролов, однако этого нельзя было проверить ни Силком ни WinAPI :(
#11
Отправлено 23 мая 2008 - 10:08
Ну вручную что вы имеете в виду...када выбираецо тот или иной вид иконок то они соответсвенно меняюцо,но силк этого не отслеживает почему то...А вы уверены, что установливаете эти свойства, когда контрол меняется?
Мы столнулись с тем, что программист может "вручную" менять вид контролов, однако этого нельзя было проверить ни Силком ни WinAPI :(
#12
Отправлено 10 июня 2008 - 09:26
иногда программисты просто пикселы рисовать могут, поэтому случается, что штатные средства пасуют...
попросите, что программист написал сам утилиту - которая показыает, в каком состоянии находится тот или иной ListView, и с помощью нее проверьтe этот контрол ;)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных