Seite 1 von 1

Position des Eigenschaften Fensters ändern

Verfasst: 08.01.2011 00:07
von hjbremer
Hallo liebe PBler, schönen guten Abend.

Kleines Problem
Für ein ExplorerListGadget rufe ich über ein PopUpMenu das Eigenschaftenfenster auf.

Wie kann ich die Position des Fensters festlegen. Momentan erscheint es rechts vom Cursor.
Ich hätte es gerne woanders, vorzugsweise in der Mitte.

hier ein Democode

Code: Alles auswählen

Procedure.i ImgKleinTreeProp(tree)
       
   Protected item = GetGadgetState(tree)
   Protected name.s = GetGadgetText(tree)
   
   If item > -1
      name = GetGadgetText(tree) + GetGadgetItemText(tree, item)
   EndIf
   
   Protected shellinfo.SHELLEXECUTEINFO 
   
   shellinfo\cbSize = SizeOf(SHELLEXECUTEINFO) 
   shellinfo\fMask = #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_INVOKEIDLIST | #SEE_MASK_FLAG_NO_UI 
   shellinfo\lpVerb = @"properties"
   shellinfo\lpFile = @name
   ShellExecuteEx_(@shellinfo)
   
EndProcedure


window = OpenWindow(#PB_Any, 0, 0, 400, 200, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
   treepopup = CreatePopupImageMenu(#PB_Any, #PB_Menu_ModernLook)
         MenuItem(1, "neuen Ordner erstellen")
         MenuBar()
         MenuItem(2, "löschen" + #TAB$ + "entf")
         MenuItem(3, "umbenennen" + #TAB$ + "F2")
         MenuBar()
         MenuItem(4, "Eigenschaften")
         
   tree = ExplorerListGadget(#PB_Any, 10, 10, 380, 180, "*.*")
         
   Repeat : event = WaitWindowEvent()
               
            Select event
               Case #PB_Event_Gadget         
                  Select EventGadget()
                     Case tree
                         If EventType() = #PB_EventType_RightClick
                            DisplayPopupMenu(treepopup, WindowID(window))      
                         EndIf
                   EndSelect
                                            
               Case #PB_Event_Menu
                  Select EventMenu()
                     Case 4: ImgKleinTreeProp(tree)       
                  EndSelect
                  
            EndSelect
            
          
   Until event = #PB_Event_CloseWindow
 

Re: Position des Eigenschaften Fensters ändern

Verfasst: 10.01.2011 06:25
von NoUser
Hallo

Ein fertiges Beispiel habe ich leider nicht. Es sollte jedoch über einen Dialog-Hook gehen.
Habe hier oder im EN-Forum mal ein Beispiel gesehen wo dies mit dem Datei öffnen Dialogfenster gemacht wurde.
Vielleicht hilft Dir diese Info bereits etwas.

lg Martin

Re: Position des Eigenschaften Fensters ändern

Verfasst: 10.01.2011 19:34
von NicknameFJ
Hallo HJBremer,

ich habe das immer so gelöst:
Cursorposition zwischenspeichern, Cursor an die Stelle setzen wo das PopUp erscheinen soll, PopUpFenster anzeigen und Cursor wieder an Position aus dem Zwischenspeicher setzen.

Aber vielleicht geht es ja viel direkter und einfacher

Grüße

NicknameFJ

Re: Position des Eigenschaften Fensters ändern

Verfasst: 10.01.2011 19:49
von Rudi
...oder diese vier Zeilen ganz unten in die Prozedur einfügen:

Code: Alles auswählen

   Sleep_(250)
   hWnd = GetForegroundWindow_()
   GetWindowRect_(hWnd, @lp.RECT)
   SetWindowPos_(hWnd, 0, 0, 0, lp\right-lp\left, lp\bottom-lp\top, 0)
MfG.,Rudi

Re: Position des Eigenschaften Fensters ändern

Verfasst: 10.01.2011 21:47
von hjbremer
NicknameFJ hat geschrieben:Hallo HJBremer,

ich habe das immer so gelöst:
Cursorposition zwischenspeichern, Cursor an die Stelle setzen wo das PopUp erscheinen soll, PopUpFenster anzeigen und Cursor wieder an Position aus dem Zwischenspeicher setzen.
Ja, das ist so simpel, da wäre ich nie darauf gekommen. :allright:
Entscheidend ist nämlich, das das Eigenschaften Fenster noch nicht angezeigt wird, sonst sieht man es kurz aufblitzen an der alten Position.

Danke an alle die sich damit befasst haben, für ihre Mühe. :allright: