by colthop » Sat Dec 01, 2007 11:38 am
Hola Antonio:
No quiero refrescarla ya que lo que hago es quitarla, y volver a pintarla cuando regrese al menu principal.
Lo que hago es lo siguiente esta es la ventana principal:
DEFINE WINDOW oVentPrinc MDI FROM 0, 0 TO 24,80; // Se define la ventana principal
TITLE "CYEWIN Contabilidad y Estimaciones en WINDOWS"; //T¡tulo de la ventana
COLORS escri01, fondo01;
ICON "cyewin.ico"
SET FONT OF oVentPrinc TO oFont
repintar()
oPre:Show()
ACTIVATE WINDOW oVentPrinc MAXIMIZED
despues en repintar :
PROCEDURE repintar()
oVentPrinc:Setfocus()
if repin = 1
opre:End()
else
repin = 1
endif
public opre
DEFINE WINDOW opre MDICHILD OF oVentPrinc FROM 3,5 TO 9,93 TITLE "Datos de trabajo" color escri01, fondo01 STYLE nOr(WS_DLGFRAME)
@ 7, 10 SAY datt4 var " Persona o Entidad" OF opre PIXEL SIZE 120, 18 COLOR escri01, fondo01
@ 27, 10 SAY datt5 var " Nombre " OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 47, 10 SAY datt6 var " Ejercicio" OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 67, 10 SAY datt8 var " Fecha " OF opre PIXEL SIZE 80, 18 COLOR escri01, fondo01
@ 7,130 say dat01 var empr OF opre PIXEL SIZE 50, 18 COLOR escri03, fondo02 BORDER CENTER
@ 27, 80 say dat02 var " " + momb OF opre PIXEL SIZE 602, 18 COLOR escri03, fondo02 BORDER
@ 47, 80 say dat02 var ejer OF opre PIXEL SIZE 40, 18 COLOR escri03, fondo02 BORDER CENTER
@ 67, 80 say dat04 var dtoc(datita) OF opre PIXEL SIZE 75, 18 COLOR escri03, fondo02 BORDER CENTER
ACTIVATE WINDOW opre
SET MESSAGE OF oVentPrinc TO empr + " - " + momb + " Ejercicio : " + ejer + " Colt Hop ED., S.L." 2007 CLOCK KEYBOARD
oBarra()
oVentPrinc:SetMenu(PepePrin())
oVentPrinc:Refresh()
SysRefresh()
RETURN (NIL)
La llamada a la barra es oBarra() que es:
FUNCTION oBarra()
DEFINE BUTTONBAR oBar OF oVentPrinc PIXEL _3D SIZE 80,32 2007
@ 1, 0 BTNBMP oBot01 FILE "empresa.bmp" OF oBar WHEN .T. ACTION gestempr() SIZE 80,30 NO BORDER MESSAGE "Gestión de Personas y Entidades"
@ 1, 81 BTNBMP oBot02 FILE "diario.bmp" OF oBar WHEN .T. ACTION gestdiar(1) SIZE 80,30 NO BORDER MESSAGE "Asientos Comunes"
@ 1,162 BTNBMP oBot03 FILE "compras.bmp" OF oBar WHEN .T. ACTION gestfact(6) SIZE 80,30 NO BORDER MESSAGE "Compras y Gastos"
@ 1,243 BTNBMP oBot04 FILE "ventas.bmp" OF oBar WHEN .T. ACTION gestfact(7) SIZE 80,30 NO BORDER MESSAGE "Ventas e Ingresos"
@ 1,324 BTNBMP oBot05 FILE "modulos.bmp" OF oBar WHEN .T. ACTION gestmodu(5) SIZE 80,30 NO BORDER MESSAGE "Cálculo de Módulos"
@ 1,405 BTNBMP oBot06 FILE "regular.bmp" OF oBar WHEN .T. ACTION gestmodu(7) SIZE 80,30 NO BORDER MESSAGE "Cálculo de la Regularización"
@ 1,486 BTNBMP oBot07 FILE "cierres.bmp" OF oBar WHEN .T. ACTION gestcipe() SIZE 80,30 NO BORDER MESSAGE "Cierre Periódico"
@ 1,567 BUTTON oBot08 FILE "salida.bmp" OF oBar WHEN .T. ACTION salida() SIZE 80,30 NO BORDER MESSAGE "Salir"
RETURN (.T.)
y cuando entra en cualquier opcion hago quitmenu()
Procedure quitmenu()
oPre:Hide()
oVentPrinc:oBar:End()
oVentPrinc:oMenu:End()
oVentPrinc:SetFocus()
oVentPrinc:Refresh()
SysRefresh()
RETURN( .T. )
El funcionamiento sería:
Cuando entramos hace la ventana principal que llama a repintar() para poner en la ventana tres cosas, la primera una ventana con el usuario activo, 2 el menu principal y 3 la barra de botones con oBarra().
Cuando entra en una opcion del menu hace quitmenu() que lo que hace es eliminar el menu principal y la barra de botones para que no ocupen en la ventana ocultos.
Y Cuando sale vuelve a ponerlos con Repintar(), lo que hace ahora es poner bien el menu principal y la barra de botones la pone pero no esta activa se ven los botones pero cuando pinchas o pasas el raton por encima no hace nada.
Tambien he detectado una cosa muy rara yo el objeto que contiene el menu principal le he llamado oPepe1 dela siguiente manera:
STATIC FUNCTION PepePrin()
PUBLIC oPepe1 // Objeto que contendr el Men£
MENU oPepe1 2007
MENUITEM "&Generales"
MENU
MENUITEM "Personas o Entidades" ;
ACTION gestempr();
MESSAGE "Gestión de los datos identificativos de las Personas o Entidades de la aplicaci¢n"
SEPARATOR
....
....
ENDMENU
ENDMENU
RETURN( oPepe1 )
Pero si te das cuenta en quitmenu() para borrar el menu principal he tenido que poner :
oVentPrinc:oMenu:End()
en vez de :
oVentPrinc:oPepe1:End()
Gracias por tu interes espero tu respuesta si la hay.
Un saludo
Carlos