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