Tengo un Windows MDI con un MDICHILD. Desde éste último llamo a un dialogo y en ese dialogo he colocado un TPANEL para unas cosas mías de repintado que no vienen al caso. Resulta que no me deja colocar controles en el TPANEL. Primero me daba "Message Not found: TPANEL:DEFCONTROL". Así que le implementé un METHOD DefControl() AL TPANEL, tal que así:
- Code: Select all Expand view
- METHOD DefControl( oCtrl )
DEFAULT oCtrl:nId := oCtrl:GetNewId() // AUNQUE oCtrl YA TRAE UNO
IF ::aControls = NIL
::aControls = {}
ENDIF
AADD( ::aControls, oCtrl )
oCtrl:hWnd = 0 // TAMBIEN HE PROBADO oCtrl:hWnd = GetWindow(::hWnd,5) Y GetWindow(::oWnd:hWnd,5)
RETURN NIL
No se me cortaba, pero tamcpoco aparcía el control en pantalla. Tras algunas comprobaciones averigüë que el contol no se inicializaba. Así que modifique el METHOD INITIATE para que inicializara los controles:
- Code: Select all Expand view
- IF ::aControls # NIL
ASend(::aControls,"INICTIATE()",::hWnd)
ENDIF
Y ahora me da el error "NON DEFINED Id: No: 120"
El caso es que ya he utilizado paneles otras veces y no he tenido problemas, pero directamente sobre windows. Entiendo que en su método NEW() en vez de pasar el flujo del programa por AddControl() pasda por DefControl() y no le asigna el ::nId al TPANEL y eso que durante la definicion del control (un SAY por ejemplo) le digo OF oDlg, y su ::oWnd:hWnd da distinto de 0.
¿Alguien sabe como asignarle ese ::nId al TPANEL para que se inicialice adecuadamente?
Gracias de antemano.