FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Manejo de Variables en Entorno MDI
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Manejo de Variables en Entorno MDI
Posted: Wed Sep 05, 2007 07:21 PM
Amigos y colegas del foro tengan buen dia, en este momento me encuentro tratando de pasar mi sistema de entorno SDI a entorno MDI, pero me han dado problemas el manejo de las variables.. aqui pongo el codigo de la creaci贸n de un dialogo en entorno SDI el cual me funciona perfectamente.


********************
*Catalogo de Medidas
********************
PROC pMedida()

vgraba:=.f.
oCuadro:="oMedida"
oM1vc1:="C贸digo"
oM1lc1:={"C贸digo","Nombre"}
vOrden:="m_Medida"
oC1vg1:=space(100)

oTbMed := oLamcla:oServer:Query("SELECT * from "+oLamcla:tMedi+" ORDER BY "+alltrim(vOrden), .f. )

DEFINE DIALOG oCuadro RESOURCE "orCiudad" OF oWinp ICON "#8001"

 REDEFINE BTNBMP Btn_Agre ID 4007 OF oCuadro RESOURCE "Bagre"  TOOLTIP oLamcla:mTagr NOBORDER ACTION (vgraba:=.t.,oLamcla:autoriza(29))
 REDEFINE BTNBMP Btn_Modi ID 4001 OF oCuadro RESOURCE "Bmodi"  TOOLTIP oLamcla:mTmod NOBORDER ACTION (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 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 oCuadro:end()
 REDEFINE BTNBMP Btn_Limp ID 4010 OF oCuadro RESOURCE "BLimpi" TOOLTIP oLamcla:mTfil NOBORDER ACTION (oC1vg1:=space(100),pArMedi())

 REDEFINE COMBOBOX oM1oc1 VAR oM1vc1 PROMPTS oM1lc1 ID 4003 OF oCuadro UPDATE ;
        ON CHANGE(IF(oM1vc1="C贸digo",vOrden:="m_Medida",vOrden:="m_Nombre"),(pArMedi()))

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

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

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

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

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

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

   :CreateFromResource( 102 )
  END
 oCuadro:cTitle := "Tabla de Medidas"

ACTIVATE DIALOG oCuadro CENTERED
oTbMed:End()


En entorno MDI

********************
*Catalogo de Medidas
********************
PROC pMedida()

vgraba:=.f.
oM1vc1:="C贸digo"
oM1lc1:={"C贸digo","Nombre"}
vOrden:="m_Medida"
oC1vg1:=space(100)

oLamcla:oTbMed := oLamcla:oServer:Query("SELECT * from "+oLamcla:tMedi+" ORDER BY "+alltrim(vOrden), .f. )

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

  DEFINE DIALOG oCuadro RESOURCE "orCiudad" OF oWndChild

   REDEFINE BTNBMP Btn_Agre ID 4007 OF oCuadro RESOURCE "Bagre"  TOOLTIP oLamcla:mTagr NOBORDER ACTION (vgraba:=.t.,oLamcla:autoriza(29))
   REDEFINE BTNBMP Btn_Modi ID 4001 OF oCuadro RESOURCE "Bmodi"  TOOLTIP oLamcla:mTmod NOBORDER ACTION (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 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 oCuadro:end()
   REDEFINE BTNBMP Btn_Limp ID 4010 OF oCuadro RESOURCE "BLimpi" TOOLTIP oLamcla:mTfil NOBORDER ACTION (oC1vg1:=space(100),pArMedi())

   REDEFINE COMBOBOX oM1oc1 VAR oM1vc1 PROMPTS oM1lc1 ID 4003 OF oCuadro UPDATE ;
          ON CHANGE(IF(oM1vc1="C贸digo",vOrden:="m_Medida",vOrden:="m_Nombre"),(pArMedi()))

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

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

   oBrw := TXBrowse():New( oCuadro )
   WITH OBJECT oBrw
     :CreateHeader()
     MySetbrowse( oBrw,oLamcla:oTbMed )
     :nMarqueeStyle       := MARQSTYLE_HIGHLROW
     :nColDividerStyle    := LINESTYLE_RAISED
     :bClrSelFocus        := {|| { CLR_WHITE, RGB(24, 116, 205) } }
     oBrw:blDblClick          := {|| vgraba:=.f.,oLamcla:autoriza(30)}
     oBrw:bKeyDown            := {|nKey|iif(nKey == 13,(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} ) }

     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 (oWndChild:End(), .t. )

  oWndChild:nWidth := oCuadro:nWidth+7
  oWndChild:nHeight := oCuadro:nHeight+32

  oWndChild:cTitle:="Tabla de Medidas"

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


La "ventana" se dibuja perfectamente para los dos casos, pero al momento que el GET (oC1og1) toma el foco me sale el ERROR variable oC1vg1 no existe, aun estando definida al inicio de la funcion.

Alguien me puede ayudar..
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Manejo de Variables en Entorno MDI
Posted: Wed Sep 05, 2007 07:46 PM

Leandro,

Una ventana MDI hija no es MODAL, es decir, la ejecuci贸n de la aplicaci贸n no se detiene al hacer ACTIVATE WINDOW, por eso la ejecuci贸n sigue y sales de la funci贸n en donde has declarado esas variables.

Tendr谩s que hacer esas variables static 贸 bien crear una clase que contenga todos esos valores que usas

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Ok..
Posted: Wed Sep 05, 2007 08:06 PM

Ok Antonio muchas gracias por la repuesta.. voy a probar y cualquier cosa vuelvo a molestar.

Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Manejo de Variables en Entorno MDI
Posted: Wed Sep 05, 2007 09:58 PM

yo lo que hago para evitarme molestias es utilizar la data CARGO de la ventana MDICHILD, ahi pongo mis variables dentro de un arreglo:

oWndChil:Cargo := {}
oWndChild: Cargo [1] := lo que sea
oWndChild:Cargo[2] := .......
......

Saludos

R.F.

Continue the discussion