Незнаю, поймете ли вы меня... В общем над этой проблемой уже целый день мучаюсь...
Имеется объекты Окно1 и Окно2. Они оба находятся в одном листе. Выполнчет обновление по очереди - ОкноN .
Нужно узнать, куда ткнули. То есть, в какой объект именно.
Проблема в том, что постоянно получается, что ткнули по объекту не тому. То есть, если у нас Окно1 внизу, а Окно2 выше, но в списках по другому, а ткнули мы, допустим, как на рисунке, то получается, что выбрано Окно1, а не Окно2. Хотя оно выше. То есть мы выбрали объект через другой (визуально).
Так же все объкты имеют переменную Z. Окно1 , допустим, Z=0, а Окно2 : Z=1 . Как-то надо с этими высотами работать, и , сделать так, чтобы через верхний объект нельзя было выбрать нижний.
В общем, как-то из-за положения в списке и из-за Z у нас получается выбрать объект через объект.. как-то надо сделать ограничение, но моего ума не хватило... *даун* ...
Надеюсь ,вы меня поняли. помогите, плиз. Объясните... промучалсо весь день...
[blitz]
Global SGUIWindow:TList=New TList
Global GUI_Z = 0
Global MX, MY, MD, MH
'Главный тип
Type TGUI
Field Name$
Field X,Y
Field Width,Height
Field Text$
Field Image
Field Z
'Прорисовка
Field Visible
'0 - не рисуем
'1 - рисуем темным
'2 - Рисуем нормально
Field Number
'Группа.
Field DrapNDrop[4]
Method UpdateWindow ()
If MH=1 And MX > X And MX < X + width And MY > Y And MY < Y + Height Then GUI_Z:+1 ; Z=GUI_Z
'Таскаем окно
'Если нажали на той полоске, то записываем координаты мыши - х координата окна
If MH=1 And MX > X And MX < X + width And MY > Y And MY < Y + 25 Then
DrapNDrop[0] = MX-X
DrapNDrop[1] = MY-Y
DrapNDrop[2] = 1
End If
'Если драпдроп включен, то перемещаем.
If DrapNDrop[2] = 1
X = MX-DrapNDrop[0]
Y = MY-DrapNDrop[1]
End If
'Если не нажата, то выклчаем драпндроп
If MD=0 Then DrapNDrop[2] = 0
End Method
Method DrawWindow ()
//РИСУЕМ
End Method
Function CreateGUI_Window:TGUI (x,y,width,height,text$,name$,button,number,Visibl e )
Local GUI_Window:TGUI=New TGUI
//СОЗДАЕМ
GUI_Window.z = GUI_Z
GUI_Z:+1
ListAddLast(SGUIWindow , GUI_Window)
Return GUI_Window
End Function
End Type
TGUI.CreateGUI_Window (5,5,630,445,"Create Game","Window",0,1,1 )
TGUI.CreateGUI_Window (120,5,30,45,"Create","Window",0,2,1 )
While Not KeyDown (Key_Escape)
Cls
TileImage Image
MX = MouseX()
MY = MouseY()
MD = MouseDown(1)
MH = MouseHit(1)
Value=GetChar()
For i = 0 To GUI_Z
For GUI_Window:TGUI=EachIn SGUIWindow
If GUI_Window.Z = i Then GUI_Window.UpdateWindow ; GUI_Window.DrawWindow ()
Next
Next
Flip
Wend
[/blitz]