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

Фотография

DevExpress.XtraBars перестает видеть меню


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

#1 idunin

idunin

    Активный участник

  • Members
  • PipPip
  • 116 сообщений
  • ФИО:Илья Владимирович
  • Город:Москва


Отправлено 10 марта 2011 - 07:54

Коллеги, может кто сталкивался.

При работе с данным компонентом появилась проблема следующего характера. Пункты меню нажимаются четыре раза, а потом TC просто перестает видеть менюшку и соответственно нажимать ее.

Пробовал метод найденный на просторах интернета, где предлагается искать объект, а потом кликать по координатам, пробовал метод предложенный в самом ТС, когда генерится путь к меню и вызывается метод Click. Результат одинаков в обоих случаях (написал выше).

Нашел выход, перезапускать приложение для каждого теста, но не очень красиво и иногда внутри теста надо несколько раз нажать менюху (например, обновить экран).

TC 7.52.678.3
.Net Framework 3.5SP1

Версия приложения, которая работала без проблем была скомпилирована с версией .Net FW 2.0, сейчас новая версия скомпилирована с .Net FW 3.5SP1

На тестовом стенде версия .Net не менялась, всегда была 3.5SP1.

Очень похоже на какой-то дефект в TC, но как обойти корректно не очень понимаю.

Так не работает:
  sMenuItem = obj.FullName 
  
	For i = LBound(items) To UBound(items)
		if i = 0 then		
			sMenuItem = sMenuItem & ".wItems.Item(" & Chr(34) & items(i) & Chr(34) & ")"
		else
			sMenuItem = sMenuItem & ".Items.Item(" & Chr(34) & items(i) & Chr(34) & ")"
		end if		     
	Next
	
	Call oLogManager.Report(DEBUG_LEVEL, sCurrModule, "Menu: " & sMenuItem)
	
	Execute "Set menuObj = " & sMenuItem
	
	if IsEmpty(menuObj) then
	  Call oLogManager.Report(ERROR_LEVEL, sCurrModule, "Can't click menu item: " & aqString.GetListItem(sMPath, 0))
    selectMenu = -1
    Exit Function				
	else
		menuObj.Click
	end if

и вот так не работает:
   Set bar = oMenu.Bar
   
   x = oMenu.ScreenLeft
   y = oMenu.ScreenTop

   items = Split(sItemName, "|")
   
   For i = LBound(items) To UBound(items)
     Set item = Nothing
     
     For j = 0 To bar.ItemLinks.Count - 1
        If SameText(bar.ItemLinks.get_Item(j).Caption, items(i)) Then
          Set item = bar.ItemLinks.get_Item(j)
          Exit For
        End If
     Next

     If item Is Nothing Then
       SelectXtraBarsMainMenuItem = -1
       Exit Function
     End If

     ' Clicks the item
     xx = x + item.Bounds.Left + item.Bounds.Width / 2
     yy = y + item.Bounds.Top + item.Bounds.Height / 2
     Call Sys.Desktop.MouseDown(VK_LBUTTON, xx, yy)
     Call Sys.Desktop.MouseUp(VK_LBUTTON, xx, yy)

     If i = 0 Then
       x = x + item.Bounds.Left
       y = y + item.Bounds.Bottom
     Else
       x = x + item.Bounds.Right
       y = y + item.Bounds.Top
     End If

     Set bar = item.item
   Next

  • 0

#2 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 10 марта 2011 - 10:37

Здравствуйте.

Я с таким не сталкивался. Рекомендую обратиться в службу поддержки.
  • 0
С уважением,
Дмитрий

#3 idunin

idunin

    Активный участник

  • Members
  • PipPip
  • 116 сообщений
  • ФИО:Илья Владимирович
  • Город:Москва


Отправлено 10 марта 2011 - 12:42

Здравствуйте.

Я с таким не сталкивался. Рекомендую обратиться в службу поддержки.

С этим тяжело в силу некоторых причин. :(
  • 0


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

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