brauche eure hilfe da ich mit meine pb kenntnisse am limit bin ...
folgendes problem, ich möchte auf ein treegadget ein contextmenu verwenden
rechtemaustaste auf ein "item" und menu aufrufen ...
dies funktioniert auch...
aber beim ausführen des menuaufruf starte ich ein neues fenster...
über "createthread".
beim schliessen des fenster kann ich die variable fullpath ..
nicht mehr verwenden.
diese variable ermöglicht mir zu wissen welche name und ebene (root,child...)der aktuelle ausgewählten Eintrag (fullpath) hat.
ich entschuldige mich für die unubersichtlichkeit des code ....
und natürlich hoffe ich das jemand mir helfen wird.
Grüsse
JPD
Code: Alles auswählen
Enumeration
#Frame3D_0
#Text_0
#Text_1
#String_0
#String_2
#Button_00
#Text_3
#Combo_0
#Button_01
EndEnumeration
#Window_0 = 1111
#Window = 0
#Gadget_TV = 1
#MMTB = 200
Global MMTextBox , Position.l,FullPath.s
Global Buffer.s,dom_name.s,dom_group.s,CurrentText.s, status.s,CurrentItem.l, hItem.l , hParent.l
Procedure Open_win(group_dom.s)
If OpenWindow(#Window_0, 501, 27, 238, 211, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_BorderLess , "accout")
If CreateGadgetList(WindowID())
Frame3DGadget(#Frame3D_0, 10, 10, 220, 140, "user credentials")
TextGadget(#Text_0, 20, 40, 60, 30, "Username:")
TextGadget(#Text_1, 20, 80, 60, 20, "Password:")
StringGadget(#String_0, 110, 40, 110, 20, "")
StringGadget(#String_2, 110, 80, 110, 20, "", #PB_String_Password)
ButtonGadget(#Button_00, 10, 170, 100, 30, "Connect")
TextGadget(#Text_3, 30, 120, 60, 20, "Domain")
ComboBoxGadget(#Combo_0, 110, 120, 110, 80)
ButtonGadget(#Button_01, 130, 170, 100, 30, "Cancel")
EndIf
EndIf
Debug "Computername: " + CurrentText
AddGadgetItem(#Combo_0, -1, CurrentText)
AddGadgetItem(#Combo_0, -1, group_dom)
SetGadgetState(#Combo_0,0)
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow
Debug "currentitem: " + Str(currentitem)
SetFocus_(WindowID(#Window))
QuitThread = 1
EndSelect
Until QuitThread = 1
EndProcedure
If CreatePopupMenu(1)
MenuItem(1,"Login")
EndIf
hWnd.l=OpenWindow(#Window, 111,111, 400, 300, #PB_Window_TitleBar , "nett desk")
CreateGadgetList(hWnd)
Frame3DGadget(#Window,5,0,390,295,"")
tv=TreeGadget(#Gadget_TV, 10, 10, 380, 280,#ES_AUTOVSCROLL|#WS_VSCROLL|#PB_String_ReadOnly )
SendMessage_(GadgetID(#Gadget_TV),$111D,0,12189133)
For t=1 To 5
AddGadgetItem(#Gadget_TV,-1,"item"+Str(t))
OpenTreeGadgetNode(#Gadget_TV,t)
AddGadgetItem(#Gadget_TV,-1,"child"+Str(t))
CloseTreeGadgetNode(#Gadget_TV,t)
Next
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1
MB.l=EventType() ;<--- for checking if was pushed RMB or LMB, ...
GetCursorPos_(@var.TV_HITTESTINFO\pt) ;get mousepointer position screen coordenates
ScreenToClient_(GadgetID(#Gadget_TV),@var.TV_HITTESTINFO\pt) ;convert that coordenates to the Gadget 1 (TreeView Gadget) referenced by
SendMessage_(GadgetID(#Gadget_TV),#TVM_HITTEST,0,var) ;this is to know what is the item i am pointing.
SendMessage_(GadgetID(#Gadget_TV),#TVM_SELECTITEM,#TVGN_CARET,var\hItem);<-- and this selects the pointed item
itemsel=GetGadgetState(#Gadget_TV) ;save selected item
Select MB
Case #PB_EventType_RightClick
Gosub testtree
Debug "fullpath: "+ FullPath
Position = FindString(FullPath, "/", 1)
Debug "position: " +Str(position)
If position => 1 ;wird diese if struktur verwendet dann wird ein popupmenu nur bei childs
;angezeigt!
DisplayPopupMenu(1,hWnd)
EndIf
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenuID()
Case 1: CreateThread(@Open_win(),0)
EndSelect
EndSelect
Until EventID=#PB_Event_CloseWindow
testtree:
Debug "testtree"
If GetGadgetState(#gadget_tv) <> -1
CurrentItem = GetGadgetState(#gadget_tv)
CurrentText = GetGadgetItemText(#gadget_tv, CurrentItem, 0)
ItemToWalk.l = CurrentItem
FullPath = CurrentText
Repeat
hItem.l = GadgetItemID(#gadget_tv, ItemToWalk)
hParent.l = SendMessage_(GadgetID(#gadget_tv), #TVM_GETNEXTITEM, #TVGN_PARENT, hItem)
ParentNumber.l = TreeGadgetItemNumber(#gadget_tv, hParent)
ParentText2.s = GetGadgetItemText(#gadget_tv, ParentNumber, 0)
FullPath = ParentText2 + "/" + FullPath
ItemToWalk = ParentNumber
Until ItemToWalk = -1
If Left(FullPath, 1) = "/"
FullPath = Mid(FullPath, 2, Len(FullPath) - 1)
EndIf
EndIf
Return