ich programmiere gerade eine Anwendung zu Datenverwaltung.
Dabei ist das Anwendungsfenster mit einem Splitter vertikal geteilt.
Links ein TreeGadget zur Auswahl des Datensatzes und rechts ein Scrollgadget
in dem der passende Dialog zum bearbeiten des Datensatzes angezeigt werden soll.
(Die Dialoge werden später aus einer Dll geladen)
Mein Problem ist nun, wie kann ich einen Dialog in einem Scrollgadget richtig anzeigen.
Bei den jetzigen Versuchen wird der Dialog zwar angezeigt, verschwindet aber beim scrollen
wieder
Hier mal ein schnelles verkürztes Beispiel!
Die Dialogbox wird zwar im ScrollGadgeet angezeigt, die Buttons lassen sich aber nicht betätigen
und sobald ich scrolle verschwindet der Dialog
Code: Alles auswählen
EnableExplicit
Structure DLG_TEMPLATE 
    style.l 
    dwExtendedStyle.l 
    cdit.w 
    x.w 
    y.w 
    cx.w 
    cy.w 
    menu.w
    class.w 
    title.l 
EndStructure 
Define dlg.DLG_TEMPLATE 
Define *g_hmainFrm
Define *g_hStatusBar
Define g_heightStatusBar
Define *g_hContainer
Define *g_hTreeView
Define *g_hSplitter
Define *g_hDialog
Define WndStyle.i
Define PRect.Rect
Define x, y, width, Height
dlg\style=#WS_CHILDWINDOW | #WS_VISIBLE | #DS_3DLOOK | #DS_SETFONT
dlg\cx=320 
dlg\cy=300 
Procedure DlgProc(hWnd, uMsg, wParam, lParam) 
    Select uMsg 
    Case #WM_INITDIALOG 
        UseGadgetList(hWnd) 
        ButtonGadget(0,20,20,100,22,"OK") 
        ButtonGadget(1,20,50,100,22,"Cancel") 
        ButtonGadget(2,20,80,100,22,"Quit") 
    Case #WM_COMMAND 
        EndDialog_(hWnd,wParam&$FFFF) 
    EndSelect 
    ProcedureReturn 0 
  EndProcedure 
  
WndStyle = #PB_Window_SystemMenu | #PB_Window_Invisible
SetThemeAppProperties_(0)
*g_hmainFrm = OpenWindow(0, 0, 0, 640, 480, "Main Window", WndStyle)
SetWindowLongPtr_(*g_hmainFrm,#GWL_STYLE,GetWindowLongPtr_(*g_hmainFrm,#GWL_STYLE)!#WS_MINIMIZEBOX)
InitCommonControls_()
GetClientRect_(*g_hmainFrm, PRect)
x = PRect\left
y = PRect\top
width = PRect\right - PRect\left
Height = Prect\bottom - Prect\Top
UseGadgetList(*g_hmainFrm)
*g_hStatusBar = CreateStatusBar(131,*g_hmainFrm)
g_heightStatusBar = StatusBarHeight(131)
SetWindowLongPtr_(*g_hmainFrm,#GWL_STYLE,GetWindowLongPtr_(*g_hmainFrm,#GWL_STYLE)!#WS_THICKFRAME)
*g_hTreeView = TreeGadget(10,x,y,width/2,Height-g_heightStatusBar)
*g_hContainer = ScrollAreaGadget(20,x,y,width,Height-g_heightStatusBar,600,600,1)
CloseGadgetList()
*g_hSplitter = SplitterGadget(30,x,y,width,Height-g_heightStatusBar,10,20,#PB_Splitter_Vertical |#PB_Splitter_Separator  )
*g_hDialog = CreateDialogIndirectParam_(0,dlg,*g_hContainer,@DlgProc(),0) 
;SetParent_(*g_hDialog, *g_hContainer)
ShowWindow_(*g_hDialog,#SW_SHOW)
HideWindow(0,#False)
SetActiveWindow(0)
Define event.l
Repeat 
    event = WaitWindowEvent() 
    Select event 
        Case #PB_Event_Gadget 
            Debug EventGadget() 
    EndSelect 
Until event=#PB_Event_CloseWindow 
End 

 
 
