Что нового

Как поместить объект GUI выше по z-index при перекрытии его ActiveX?

darkwhite

Новичок
Сообщения
129
Репутация
4
Проблема вот в чем
Кнопка перекрывается объектом и следовательно не отрабатывает действия. а так же Лист который должен появляться и скрываться данной кнопкой также попадает под него.

Возникает вопрос можно ли как то вынести их на уровень выше или есть какие любо другие решения ?
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <IE.au3>

$iW = @DesktopWidth *0.95
$iH = @DesktopHeight * 0.95
$chat = GUICreate("Чат",$iW , $iH, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME, $WS_OVERLAPPEDWINDOW, $WS_TILEDWINDOW, $WS_TABSTOP));, $WS_EX_COMPOSITED)
;~ $Tabs=GUICtrlCreateTab(0,0,$iW*1.05,$iH*1.05)
	$eu=GUICtrlCreateTabItem("Сервер РУ")
		$oIE = ObjCreate("Shell.Explorer.2")
		$GUIActiveX = GUICtrlCreateObj($oIE, -55, 20, $iW*1.1, $iH*0.92)
		GUICtrlSetResizing($GUIActiveX, $GUI_DOCKBORDERS)
		_IENavigate($oIE, "http://globalchat-eu-pub-01.bigpoint.net/chattool/")
$Btn=GUICtrlCreateButton("кнопка",0,550,100,30)
$listview = GUICtrlCreateListView("элементы", 0, 0,100,300)
for $i=1 to 5
	GUICtrlCreateListViewItem($i, $listview)
Next

GUICtrlSetState($listview,$GUI_HIDE)
GUISetState()



While 1
	Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Btn
			if ControlCommand($chat,"",$listview,"IsVisible","") then
			GUICtrlSetState($listview,$GUI_HIDE)
		else
			GUICtrlSetState($listview,$GUI_SHOW)
		EndIf
    EndSwitch
WEnd
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Ты этого хотел ?
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <IE.au3>

$iW = @DesktopWidth *0.95
$iH = @DesktopHeight * 0.95
$chat = GUICreate("Чат",$iW , $iH, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME, $WS_OVERLAPPEDWINDOW, $WS_TILEDWINDOW, $WS_TABSTOP));, $WS_EX_COMPOSITED)
$Tabs=GUICtrlCreateTab(0,0,$iW*1.05,$iH*1.05)
$eu=GUICtrlCreateTabItem("Сервер РУ")
	$oIE = ObjCreate("Shell.Explorer.2")
	$GUIActiveX = GUICtrlCreateObj($oIE, 0, 20, $iW*1.1, $iH*0.92)
	GUICtrlSetResizing($GUIActiveX, $GUI_DOCKBORDERS)
   _IENavigate($oIE, "")
$eu1=GUICtrlCreateTabItem("ListView")
	$Btn=GUICtrlCreateButton("кнопка",0,550,100,30)
	$Listview = GUICtrlCreateListView("элементы", 0, 20,100,300)
	_GUICtrlListView_SetBkColor ($ListView,0xC000C0)
	For $i=1 to 5
		GUICtrlCreateListViewItem( $i, $Listview)
	Next

	GUICtrlSetState($listview,$GUI_HIDE)
	
	GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Btn
            if ControlCommand($chat,"",$listview,"IsVisible","") then
            GUICtrlSetState($listview,$GUI_HIDE)
        else
            GUICtrlSetState($listview,$GUI_SHOW)
        EndIf
    EndSwitch
WEnd
или это ?
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <IE.au3>

$iW = @DesktopWidth *0.95
$iH = @DesktopHeight * 0.95
$chat = GUICreate("Чат",$iW , $iH, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME, $WS_OVERLAPPEDWINDOW, $WS_TILEDWINDOW, $WS_TABSTOP));, $WS_EX_COMPOSITED)
$Btn=GUICtrlCreateButton("кнопка",0,550,100,30)
$Listview = GUICtrlCreateListView("элементы", 0, 20,100,300)
_GUICtrlListView_SetBkColor ($ListView,0xC000C0)
For $i=1 to 5
	GUICtrlCreateListViewItem( $i, $Listview)
Next

GUICtrlSetState($listview,$GUI_HIDE)

$Tabs=GUICtrlCreateTab(100,0,$iW*1.05,$iH*1.05)
$eu=GUICtrlCreateTabItem("Сервер РУ")
	$oIE = ObjCreate("Shell.Explorer.2")
	$GUIActiveX = GUICtrlCreateObj($oIE,100, 20, $iW*1.1, $iH*0.92)
	GUICtrlSetResizing($GUIActiveX, $GUI_DOCKBORDERS)
   _IENavigate($oIE, "")
	GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Btn
            if ControlCommand($chat,"",$listview,"IsVisible","") then
            GUICtrlSetState($listview,$GUI_HIDE)
        else
            GUICtrlSetState($listview,$GUI_SHOW)
        EndIf
    EndSwitch
WEnd
Вопрос малопонятен ;)
 
Автор
D

darkwhite

Новичок
Сообщения
129
Репутация
4
:smile:
не совсем ))
хотел чтобы лист и кнопка находились на уровень выше чем объект страницы, не двигая при этом ее - т.е. были видны, чтобы объект страницы их не загораживал.
а то получается если не прибегать к каким то ухищрениям они получаются под страницей - а следовательно и выделить их нельзя...

вот как то так... то есть сделать что то подобия слоев если это возможно )
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
darkwhite [?]
хотел чтобы лист и кнопка находились на уровень выше чем объект страницы, не двигая при этом ее - т.е. были видны, чтобы объект страницы их не загораживал
Все равно непонятно.
Нельзя активные элементы устанавливать, перекрывая друг друга(без смещения)

Так кнопка будет работать :
Код:
;.......................................................
$oIE = ObjCreate("Shell.Explorer.2")
$GUIActiveX = GUICtrlCreateObj($oIE, -55, 20, $iW*1.1, $iH*0.92)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKBORDERS)
_IENavigate($oIE, "")
        GUICtrlSetState ($GUIActiveX, $GUI_DISABLE); *****************
;............................

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

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Он хочет чтобы кнопка и лист были поверх браузера и нормально отрабатывали нажатия :smile:
Думаю придется рисовать еще один невидимый GUI с кнопкой и листом поверх первого.
 
Автор
D

darkwhite

Новичок
Сообщения
129
Репутация
4
Redline верно ;D имено эт ои хочу. но видно вы правы дествительно придется делать вторую GUI )

попробовал
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>

Opt('GUIOnEventMode',       1)

Func _ProExit()
    Exit
EndFunc

Func _CloseWin()
    GUIDelete(@GUI_WinHandle)
EndFunc


$iW = @DesktopWidth *0.95
$iH = @DesktopHeight * 0.95
#Region Forma
$chat = GUICreate("Чат",$iW , $iH, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME, $WS_OVERLAPPEDWINDOW, $WS_TILEDWINDOW, $WS_TABSTOP));, $WS_EX_COMPOSITED)
GUISetOnEvent($GUI_EVENT_CLOSE, '_ProExit')

	$eu=GUICtrlCreateTabItem("Сервер РУ")
		$oIE = ObjCreate("Shell.Explorer.2")
		$GUIActiveX = GUICtrlCreateObj($oIE, -55, 20, $iW*1.1, $iH*0.92)
		GUICtrlSetResizing($GUIActiveX, $GUI_DOCKBORDERS)
		_IENavigate($oIE, "http://globalchat-eu-pub-01.bigpoint.net/chattool/")

GUISetState()
WinSetState($chat,"",@SW_MAXIMIZE)
#EndRegion Forma

Func _ChildGUI()
    $hChildWin = GUICreate('Дочерное окно', 300, 200, 10, 10, $WS_SYSMENU,$WS_EX_TOPMOST)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseWin')
    _WinAPI_SetParent($hChildWin, $chat)
	$listview= GUICtrlCreateListView("тест", 100, 30, 0, 500)
	for $i=1 to 5
		GUICtrlCreateListViewItem($i, $listview)
	Next

    GUISetState(@SW_SHOW, $hChildWin)
EndFunc

_ChildGUI()
While 1
    Sleep(10)
WEnd


не помогает )) все равно объект перекрывает дочернее окно ))

О, gregaz http://autoit-script.ru/index.php?topic=5805.msg41356#msg41356
тут подсказал на другое, а сразу помогло этому ))
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
darkwhite
Маленький совет :

Все функции помещать после обработчика событий. (While 1.....WEnd)

обращения же к ним: до функции обработчика событий.
 
Верх