Page 1 of 1

Dos Preguntas sobre MDI

Posted: Tue Oct 02, 2007 2:36 pm
by leandro
Amigos del foro tengan buen día tengo las siguientes preguntas:

1- Estoy trabajando con ventanas MDI y resulta que cuando abro las ventanas estas me salen en la misma posicion, se coloca una sobre la otra; la pregunta es como hago para ir aumentando las coordenadas de las ventanas a medida que se van creando para que se vea como CASCADA?

El codigo de una de las ventanas el es siguiente:

Code: Select all

DEFINE WINDOW oLamcla:oWndChild MDICHILD OF oWnd FROM 3,3 TO 6,6 COLOR "N/W" nomaximize border none ICON "#8009"
  oLamcla:oWndChild:bGotFocus  = { || oCuadro:SetFocus() }

  DEFINE DIALOG oCuadro RESOURCE "orCiudad" OF oLamcla:oWndChild

   REDEFINE BTNBMP Btn_Agre ID 4007 OF oCuadro RESOURCE "Bagre"  TOOLTIP oLamcla:mTagr NOBORDER ACTION (oLamcla:vgraba:=.t.,oLamcla:autoriza(29))
   REDEFINE BTNBMP Btn_Modi ID 4001 OF oCuadro RESOURCE "Bmodi"  TOOLTIP oLamcla:mTmod NOBORDER ACTION (oLamcla:vgraba:=.f.,oLamcla:autoriza(30))
   REDEFINE BTNBMP Btn_Borr ID 4002 OF oCuadro RESOURCE "Bborr"  TOOLTIP oLamcla:mTbor NOBORDER ACTION oLamcla:autoriza(31)
   REDEFINE BTNBMP oLamcla:Btn_Imor ID 4004 OF oCuadro RESOURCE "Bimpr"  TOOLTIP oLamcla:mTimp NOBORDER ACTION oLamcla:autoriza(32)
   REDEFINE BTNBMP Btn_Sali ID 4006 OF oCuadro RESOURCE "Bsalid" TOOLTIP oLamcla:mTsal NOBORDER ACTION (oLamcla:oTbMed:End(),oCuadro:end())
   REDEFINE BTNBMP Btn_Limp ID 4010 OF oCuadro RESOURCE "BLimpi" TOOLTIP oLamcla:mTfil NOBORDER ACTION (oLamcla:oC1vg1:=space(100),pArMedi())

   REDEFINE COMBOBOX oM1oc1 VAR oM1vc1 PROMPTS oM1lc1 ID 4003 OF oCuadro UPDATE ;
          ON CHANGE(IF(oM1vc1="Código",oLamcla:vOrden="m_medida",oLamcla:vOrden:="m_nombre"),(pArMedi()))

   REDEFINE GET oC1og1 VAR oLamcla:oC1vg1 ID 4009 OF oCuadro UPDATE VALID(pBusMed(),.T.)

   TXBrowse():lHeaders := .T.
   oLamcla:oTbMed:GoTop()

   oLamcla:oBrwMed := TXBrowse():New( oCuadro )
   WITH OBJECT oLamcla:oBrwMed
     :CreateHeader()
     MySetbrowse( oLamcla:oBrwMed,oLamcla:oTbMed )
     :nMarqueeStyle       := MARQSTYLE_HIGHLROW
     :nColDividerStyle    := LINESTYLE_RAISED
     :bClrSelFocus        := {|| { CLR_WHITE, oLamcla:cClr3 } } //:= {|| { CLR_WHITE, RGB(24, 116, 205) } }
     oLamcla:oBrwMed:blDblClick          := {|| oLamcla:vgraba:=.f.,oLamcla:autoriza(30)}
     oLamcla:oBrwMed:bKeyDown            := {|nKey|iif(nKey == 13,(oLamcla:vgraba:=.f.,oLamcla:autoriza(30)),(" "))}
     :nHeaderLines        := 1
     :lColDividerComplete := .t.
     :lRecordSelector     := .t.
     :SetColor(CLR_BLACK, RGB(255,255,235))
     :bClrStd := {|| IF( (oLamcla:oTbMed:Recno()%2)==0,{CLR_BLACK,oLamcla:cClr2},{CLR_BLACK,oLamcla:cClr1} ) }
     :bClrSel := {|| { CLR_BLACK,oLamcla:cClr7 } }

     WITH OBJECT :AddCol()
       :cHeader       := "Código"
       :bStrData      := GenCB(oLamcla:oTbMed,1)
       :nHeadStrAlign := AL_LEFT
       :nDataStrAlign := AL_LEFT
       :nWidth        := 80
     END

     WITH OBJECT :AddCol()
       :cHeader       := "Nombre"
       :bStrData      := GenCB(oLamcla:oTbMed,2)
       :nHeadStrAlign := AL_LEFT
       :nDataStrAlign := AL_LEFT
       :nWidth        := 225
     END

     WITH OBJECT :AddCol()
       :cHeader       := "Sigla"
       :bStrData      := GenCB(oLamcla:oTbMed,3)
       :nHeadStrAlign := AL_LEFT
       :nDataStrAlign := AL_LEFT
       :nWidth        := 65
     END

     :CreateFromResource( 102 )
    END

  ACTIVATE DIALOG oCuadro NOWAIT CENTERED ON INIT oCuadro:Move( 0, 0 ) VALID (oLamcla:oWndChild:End(), .t. )

  oLamcla:oWndChild:nWidth := oCuadro:nWidth+7
  oLamcla:oWndChild:nHeight := oCuadro:nHeight+32
  oLamcla:oWndChild:cTitle:="Tabla de Medidas"

ACTIVATE WINDOW oLamcla:oWndChild ON INIT oWnd:paint()

2- En el menu principal cree el menu (valga la rebusnancia) para el control de las ventanas; pero cuando se activan las ventanas en el submenu "ventanas" no se muestran las ventanas activas si no el menu siguiente, ¿como se le indica al sistema cual es el submenu que debe afectar?.

Code: Select all

********************************
*GENERA EL MENU DE LA APLICACION
********************************
FUNCTION Menu()
LOCAL oMenu
MENU oMenu

  MENUITEM "&Contabilidad"
    MENU
      MENUITEM "&Catálogos"
        MENU
          MenuItem "&Terceros"          		ACTION oLamcla:autoriza(11)
          SEPARATOR
          MenuItem "C&omprobantes"      		ACTION oLamcla:autoriza(83)
	  MenuItem "&Control Documentos"        	ACTION oLamcla:autoriza(107)
          MenuItem "&Otros Conceptos Documentos"        ACTION oLamcla:autoriza(147)
          SEPARATOR
	  MenuItem "C&uentas"      			ACTION oLamcla:autoriza(95)
	  MenuItem "C&entros de Costo"  		ACTION oLamcla:autoriza(89)
          SEPARATOR
	  MenuItem "C&iudades"          		ACTION oLamcla:autoriza(23)
	ENDMENU
      MENUITEM "Ca&ptura Datos"
        MENU
          MenuItem "&Comprobantes Varios"
          MenuItem "&Ajustes por Inflación"
            MENU
              MenuItem "&Generar Comprobante de Ajustes"
              MenuItem "&Tabla de Porcentaje Mensual"
	    ENDMENU
	ENDMENU
      MENUITEM "&Reportes Impresora"
        MENU
          MenuItem "&Auxiliares"        		//ACTION oLamcla:autoriza(11)
          MenuItem "&Balances"      			//ACTION oLamcla:autoriza(11)
          MenuItem "&Estado de Resultados"      	//ACTION oLamcla:autoriza(11)
          MenuItem "&Libros Oficiales"  		//ACTION oLamcla:autoriza(11)
          MenuItem "C&omprobante de Diario"  		//ACTION oLamcla:autoriza(11)
	  MenuItem "C&entros de Costo"  		//ACTION oLamcla:autoriza(11)
	ENDMENU
      MENUITEM "C&onciliación Bancaria"
      MENUITEM "&Funciones Especiales"
        MENU
          MenuItem "&Cruce de Catálogo con Movimiento"  ACTION oLamcla:autoriza(162)
	ENDMENU
      SEPARATOR
      MENUITEM "&Salir" 				ACTION oWnd:End()
    ENDMENU
 MENUITEM "&Inventarios"
  MENU
    MENUITEM "&Catálogos"
      MENU
        MENUITEM "&Terceros"    			ACTION oLamcla:autoriza(11)
    	MenuItem "C&iudades"          			ACTION oLamcla:autoriza(23)
    	SEPARATOR
      	MENUITEM "&Unidades de Medida"  		ACTION oLamcla:autoriza(28)
    	MENUITEM "&Categorias Artículos"		ACTION oLamcla:autoriza(33)
    	MENUITEM "Nivel &1"  				ACTION oLamcla:autoriza(38)
    	MENUITEM "Nivel &2"  				ACTION oLamcla:autoriza(43)
    	MENUITEM "Nivel &3"  				ACTION oLamcla:autoriza(48)
    	MENUITEM "&Tallas"  				ACTION oLamcla:autoriza(53)
    	MENUITEM "C&olores"  				ACTION oLamcla:autoriza(58)
    	MENUITEM "Cat&egorias Tallas"			//ACTION LamCata()
    	MENUITEM "Listas de &Precios"			ACTION oLamcla:autoriza(68)
    	MENUITEM "&Artículos"	        		ACTION oLamcla:autoriza(77)
    	SEPARATOR
    	MENUITEM "&Bodegas"                 		ACTION oLamcla:autoriza(63)
      ENDMENU
    MENUITEM "&Kardex de Entradas y Salidas" 		ACTION oLamcla:autoriza(999)
    MENUITEM "&Captura Datos"
      MENU
        MenuItem "En&tradas Directas" 			ACTION oLamcla:autoriza(999)
        MenuItem "&Salidas Directas" 			ACTION oLamcla:autoriza(999)
        MenuItem "&Traslado Entre Bodegas" 		ACTION oLamcla:autoriza(999)
    	SEPARATOR
    	MenuItem "&Saldos Iniciales"        		ACTION oLamcla:autoriza(141)
      ENDMENU
    MENUITEM "&Reporte de Inventarios" 			ACTION TEMPO()
      MENU
 	MenuItem "&Movimiento Bodega" 			ACTION oLamcla:autoriza(146)
	MenuItem "I&nventarios Por Grupo" 		ACTION oLamcla:autoriza(999)
      ENDMENU
    ENDMENU

  MENUITEM "&Facturación"
  MENU
    MENUITEM "C&aptura Datos"
      MENU
      MENUITEM "&Pedidos"
	Menu
          MenuItem "Pedidos - Control Bar"      	ACTION oLamcla:autoriza(101)
          MenuItem "Pedidos en Bloque"
        EndMenu
      MenuItem "&Factura"                               ACTION oLamcla:autoriza(124)
      MenuItem "&Remisión"                              ACTION oLamcla:autoriza(155)
      SEPARATOR
      MENUITEM "&Saldos Iniciales" ACTION TEMPO()
        MENU
          MenuItem "&Saldos Iniciales Remisiones" 	ACTION oLamcla:autoriza(16)
          MenuItem "&Saldos Iniciales Facturas"   	//ACTION LamIniFa()
	ENDMENU
      ENDMENU
    MENUITEM "&Consultas Facturación"
      MENU
        MenuItem "&Factura" ACTION TEMPO()
        MenuItem "&Remisión" ACTION TEMPO()
      ENDMENU
    MENUITEM "&Reportes Facturación"
    MENU
      MenuItem "&Factura" ACTION TEMPO()
      MenuItem "&Remisión" ACTION TEMPO()
      SEPARATOR
      MenuItem "Ventas por &Día" 		        ACTION oLamcla:autoriza(132)
      SEPARATOR
      MenuItem "Codigos de Barras"                      ACTION oLamcla:autoriza(131)
    ENDMENU
  ENDMENU
  MenuItem "&Cuentas Por Pagar"
  MENU
    MenuItem "&Cuentas por Pagar (Compras)"             ACTION oLamcla:autoriza(133)
    MenuItem "&Pago a Proveedores" ACTION TEMPO()
    MenuItem "&Cancelación de Pagos" ACTION TEMPO()
    MenuItem "&Estado de Cuenta del Proveedor"
    MENU
      MenuItem "&General" ACTION TEMPO()
      MenuItem "&Detallado" ACTION TEMPO()
    ENDMENU
    MenuItem "&Reporte de Pagos Realizados" ACTION TEMPO()
    MenuItem "&Antiguedad de Saldos" ACTION TEMPO()
  ENDMENU
  MenuItem "Cuentas Por C&obrar"
  Menu
    MenuItem "&Pago de Clientes" ACTION TEMPO()
    MenuItem "&Cancelación de Pagos" ACTION TEMPO()
    MenuItem "&Estado de Cuenta del Cliente" ACTION TEMPO()
    MenuItem "&Reporte de Pagos Realizados" ACTION TEMPO()
    MenuItem "&Antiguedad de Saldos" ACTION TEMPO()
  EndMenu
  MenuItem "&Parámetros"
  Menu
    MenuItem "&Catálogo Empresas" ACTION TEMPO()
    MenuItem "&Parámetros del Sistema" ACTION TEMPO()
    MenuItem "P&orcentajes para Precios" ACTION TEMPO()
  EndMenu
  MENUITEM "&Utilerías"
  MENU
    MenuItem "&Calculadora" Message "Activa la Calculadora de Windows" Action (WinExec("CALC.EXE"))
    Separator
    MenuItem "&Ver Errores" Message "Ver Errores del Sistema" ACTION TEMPO()
  ENDMENU
  MENUITEM "&Ventanas" WHEN LEN(oWnd:oWndClient:aWnd) > 0 HELP
    MENU
      MENUITEM "&Anterior" ACTION oWnd:oWndActive:Prev();
      WHEN LEN(oWnd:oWndClient:aWnd) > 1
      MENUITEM "&Siguiente" ACTION oWnd:NextWindow();
      WHEN LEN(oWnd:oWndClient:aWnd) > 1
      MENUITEM "&Cerrar" ACTION oWnd:oWndActive:End()
      SEPARATOR
      MENUITEM "&Minimizar todo" ACTION oWnd:IconizeAll()
      MENUITEM "&Restaurar todo" ACTION AEVAL(oWnd:oWndClient:aWnd,{ |oWnd, nPos| oWnd:Restore() })
      MENUITEM "C&errar todo"  ACTION oWnd:CloseAll();
      WHEN LEN(oWnd:oWndClient:aWnd) > 1
    ENDMENU
  MENUITEM "&Seguridad" HELP
  MENU
    MENUITEM "Catálogo &Usuarios" 	 		//ACTION LamUsua()
    MENUITEM "Catálogo &Llaves"   	  		ACTION oLamcla:autoriza(112)
    SEPARATOR
    MENUITEM "Catálogo &Autorizaciones"   		ACTION oLamcla:autoriza(121)
    SEPARATOR
    MENUITEM "&Seguridad Captura Datos"   //ACTION LamLlav()
  EndMenu
  MENUITEM "&Ayuda" HELP
  MENU
    MENUITEM "&Contenido..."
    MENUITEM "&Buscar Ayuda Sobre..."
    MENUITEM "&Usar la Ayuda..."
    Separator
    MENUITEM "&Acerca de..."
  EndMenu
ENDMENU
RETURN(oMenu)

Image

De antemano gracias

Posted: Tue Oct 02, 2007 9:59 pm
by jcaro
Hola Leandro:

Yo utilizo ventanas MDI y me funcionan bien, lo hago asi:

Code: Select all

DEFINE WINDOW oWnd TITLE "Gestión Comercial" MENU Menu( ) ICON oIcon COLOR  CLR_BLUE ,CLR_BLUE  MDI 
El menu de las ventanas, es similar al tuyo.
La diferencia esta cuando creo una ventana MDI, lo hago asi:

Code: Select all


 DEFINE WINDOW oWinh MDICHILD  TITLE "ARTICULOS REGISTRADOS" OF oWnd PIXEL  //ICON oWnd:ICon 

 y al finalizar la activo asi:

ACTIVATE WINDOW oWinh  MAXIMIZED  VALID ( aDatos:= NIL , oRs:Close() , oBrw:= NIL , .T.  ) 

   oWnd:Cascade()
   oWinh:Show()
   oWinh:SetFocus()

Le agrego la opcion Cascade(), para que me las ordene automaticamente.

Espero haberte ayudado algo, sino me contactas por privado, para enviarte mas informacion.

Tiempo atras, puse un manual de como usar al 100% los MDI, lo hizo
Vikthor, creo y esmuy bueno.

Saludos,

Posted: Wed Oct 03, 2007 7:43 pm
by A&C
amigo referente al manual de como usar 100% los MDI,, seria mucho ponerlo de nuevo,, o el link de donde se puede descragar


GRACIAS

siempre es bueno aprender cosas nuevas... aunque sea para algunos jiji

Posted: Sun Oct 07, 2007 2:36 am
by mantonio_08
Amigo "JCARO"

Me agrego a la solicitud que de A&C, sobre el manual, creo que es de mucha utilidad,

Saludos,
Antonio

Posted: Sun Oct 07, 2007 4:25 am
by joseluisysturiz
Tengo algo de MDI pero creo es un poco viejo, lo hizo Eduardo Rizzolo, si no hay problema diganme donde y como subirlo, es basico, pero funciona...es un pequeño manual en WORD. Igual me sumo a la solicitud de los otros colegas.... esto del MDI me tiene un poco loco, principalmente en el uso de las DBF. Gracias.!

Posted: Wed Nov 12, 2008 4:38 am
by José Ríos
Hola Jose Luis.

Por favor enviame el manual de eduardo rizzolo a mi correo. Te lo agradecere mucho.

José Ríos

Posted: Wed Nov 12, 2008 4:44 am
by joseluisysturiz
José Ríos wrote:Hola Jose Luis.

Por favor enviame el manual de eduardo rizzolo a mi correo. Te lo agradecere mucho.

José Ríos
Man, si me das un correo sera mas facil enviartelo, jajaja, ya que no veo ninguno en tu profile...si quieres solicitamelo a mi privado y te respondo por alli mismo :D

Posted: Wed Nov 12, 2008 4:58 am
by José Ríos
Jose Luis.

Te paso mi correo: geussepe2004@hotmail.com

De antemano Muchas Gracias.

Jose Rios

Posted: Wed Nov 12, 2008 5:02 am
by joseluisysturiz
José Ríos wrote:Jose Luis.

Te paso mi correo: geussepe2004@hotmail.com

De antemano Muchas Gracias.

Jose Rios
Enviado, espero te sea de utilidad, como ya dije, es un poco viejo, pero da buenas ideas basicas...