Definicion de Variables de Clipper a Harbour /Fwh 2.7

Post Reply
User avatar
ruben Dario
Posts: 986
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Definicion de Variables de Clipper a Harbour /Fwh 2.7

Post by ruben Dario »

Hola compañeros antes en clipper 5.3 tenia una rutina para el registro fastasma, la duda como la haria en Harbour /Fwh 2.7 me genera un error Adunto codigo

IF !USAFILE(MEMVAR->DIR_CATA+"ktipmod.ve2",MEMVAR->DIR_CATA+"ktipmod","b_tipmod",.F.,.F.)
RETURN
ENDIF
init_var() //inicializo variables de la tabla
init_asivar() //asigna valores de la tabla.



Static Function init_var()
local a,i
For i = 1 to fcount()
a:="M_"+fieldname(i)
public &a
Next
return(.t.)

Static Function init_asivar()
local a,i
For i = 1 to fcount()
a:="M_"+fieldname(i)
&a := &(fieldname(i))
Next
return(.t.)

Static Function repl_var()
local a,i
For i = 1 to fcount()
a:="M_"+fieldname(i)
replace &(fieldname(i)) with &a
Next
return(.t.)

Static Function rele_var()
local a,i
For i = 1 to fcount()
a:="M_"+fieldname(i)
release &a
Next
return(.t.)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Que error da ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
ruben Dario
Posts: 986
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Post by ruben Dario »

Antonio Linares wrote:Que error da ?
Perdon Verifique mal No me da Error.

El problema que tengo es el siguiente. No me esta refrescando las variables en el Formulario

Anexo Codigo.

Code: Select all

Procedure PROG_TIPMOD()
   local oBar01,  oBrw, oFnt01, oBrush01,oBtnBmp
   local oBtnNew, oBtnTop, oBtnPrev, oBtnNext, oBtnBottom, oBtnEnd
   local oSay
   local getNombre, gettipmod
   local oGet
   Public reg_edit,reg_nue
   reg_edit := reg_nue :=0

   IF !USAFILE(MEMVAR->DIR_CATA+"ktipmod.ve2",MEMVAR->DIR_CATA+"ktipmod","b_tipmod",.F.,.F.)
      RETURN
   ENDIF  
   init_var()
    if RecCount() == 0
     go bottom
     skip+1
     init_asivar()
   else
    GO TOP
      init_asivar()
   endif
   DEFINE BRUSH oBrush01 STYLE NULL
   DEFINE FONT  oFnt01 NAME "Arial" size 08,14 BOLD    DEFINE DIALOG oDlg01 FROM 12,10 TO 42,85  TITLE "Tipos de Modulos";
   COLOR RGB(255,255,255),RGB(51,51,255);
   STYLE nOR(WS_MINIMIZEBOX)
   @ 2.7,12 SAY oSay PROMPT "Codigo   :" OF oDlg01  FONT oFnt01 SIZE 40,10; oSay:lTransparent = .T.  
   @ 3,  14 GET gettipmod Var m_tipmod   OF oDlg01 PICTURE "@!";
         WHEN m->reg_nue=1 MESSAGE "Ingrese Tipo de Modulo" COLORS RGB(0,051,0),RGB( 255,255,204) UPDATE  
   @ 4.5,12 SAY oSay PROMPT "Nombre   :" OF oDlg01  FONT oFnt01 SIZE 40,10; oSay:lTransparent = .T.  
   @ 5,  14 GET getnombre Var m_nombre OF oDlg01  PICTURE "@!"  ;
      WHEN m->reg_edit = 1 MESSAGE "Ingrese el Nombre" COLORS RGB(0,051,0),nRGB( 255,255,204) UPDATE  //oDbf02:nombre 
    ACTIVATE DIALOG  oDlg01 CENTERED VALID NoSalir() ON INIT ( CREABARRA(0,0,1,385,35,oDlg01),ShowMenu(oDlg01))

FUNCTION CREABARRA(tmen,li,lc,lb,lr,oDlg01) Local oFon2,oFon1,oBar,oBtnBmp,li_r,li_c,li_p,li_p1,l_mayu
   li_r := 20;li_c:=1.4;li_p:=4;li_p1:=1.7;l_mayu:=0
   DEFINE MSGBAR OF oDlg01 PROMPT " "   
    DEFINE BUTTONBAR oBar12 _3D SIZE 26, 27 OF oDlg01 TOP 
   DEFINE BUTTON oBNew OF oBar12 FILENAME "reg_nue.bmp" FLAT MESSAGE  "Registro Nuevo";
      ACTION  (Autoper("A",tmen,oBar12)) TOOLTIP "Nuevo Registro "
   DEFINE BUTTON oBEdi OF oBar12 FILENAME  "reg_edit.bmp" FLAT MESSAGE  "Modificar Registro";
      ACTION (Autoper("M",tmen,oBar12)) TOOLTIP "Edita Registro" 
  DEFINE BUTTON oBFres OF oBar12 FILENAME  "reg_refr.bmp" FLAT  MESSAGE  "Refrescar Registro "; 
       TOOLTIP "Refrescar Regisro" GROUP
 
....
..
...
..
Function Autoper(Tper,tbar,Barr_1)
//X_PERNIV := "A-M-E-C-R"  /Adicion Modificacion Eliminar Consulta Reporte
 IF .not.Tper$"CA-BU-BE-HE-00"
  if .not.Tper$x_perniv
    alert("No Tiene Autorizacion")  //msg("No tiene Autorizacion")
    return(.t.)
  endif
 Endif
 if Tper=="A"  // cuando ingreso Registro Nuevo
    go bottom
    skip+1
    init_asivar()
   oBNew:Disable() 
   oBEdi:Disable()
   oBElim:Disable()
   oBGrab:Enable()
   oBCanc:Enable()
   oBBusq:Disable()
   oBFind:Disable()
   oBBrow:Disable()
   oBPrim:Disable()
   oBNext:Disable()
   oBAnt:Disable()
   oBUlti:Disable()
   oBFres:Enable()
   oBPrin:Disable()
   m->reg_edit:=1
   m->reg_nue:=1
   
 elseif Tper=="M"  // Edito Registro
   oBNew:Disable()
   oBEdi:Disable()
   oBElim:Disable()
   oBGrab:Enable()
   oBCanc:Enable()
   oBBusq:Disable()
   oBFind:Disable()
   oBBrow:Disable()
   oBPrim:Disable()
   oBNext:Disable()
   oBAnt:Disable()
   oBUlti:Disable()
   oBFres:Enable()
   oBPrin:Disable()
   m->reg_edit:= 1
   m->reg_nue :=0
   alert(m->reg_edit)

..
..
..
 sysrefresh() 

Function ShowMenu(oDlg01)  Local oMenu12
      MENU oMenu12
      MENUITEM "&Datos"
      MENU
         MENUITEM "&Nuevo" ;
            MESSAGE "Nuevo Registro"; 
             ACTION Accesos( alter("dsd"),0)  FILENAME   reg_nue.bmp"
         MENUITEM "&Modificacion/Edicion...";
           MESSAGE "Modifica Registro" ACTION  (Autoper("M",0,oBar12)) ;
            FILENAME  "reg_edit.bmp"
****




Me carga el formulario con los con la barra de Botones.
El cargue inicial si carga el dato del Primer Registro.
El problema es cuando Edito El registro para Modificar debo le cambio los valores a estas variables para habilitar los Get
  m->reg_edit:=1
  m->reg_nue:=1

Lo mismo Seria Cuando es Registro Nuevo se ejecuta la funcion init_asivar(). No Refresca el formulario.
Si Lo Ejecuto desde el menu Tambien Pasa Lo mismo

El problema es que no Refresca el formulario.

HE Utilizado varias formas Incusive pasar la Vble (@reg_edit,@reg_nue)


Gracias Si no puede sacar de esta duda o me falta alguna Instruccion.
User avatar
ruben Dario
Posts: 986
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Post by ruben Dario »

ruben Dario wrote:
Antonio Linares wrote:Que error da ?
Perdon Verifique mal No me da Error.

El problema que tengo es el siguiente. No me esta refrescando las variables en el Formulario

Anexo Codigo.

Code: Select all

Procedure PROG_TIPMOD()
   local oBar01,  oBrw, oFnt01, oBrush01,oBtnBmp
   local oBtnNew, oBtnTop, oBtnPrev, oBtnNext, oBtnBottom, oBtnEnd
   local oSay
   local getNombre, gettipmod
   local oGet
   Public reg_edit,reg_nue
   reg_edit := reg_nue :=0

   IF !USAFILE(MEMVAR->DIR_CATA+"ktipmod.ve2",MEMVAR->DIR_CATA+"ktipmod","b_tipmod",.F.,.F.)
      RETURN
   ENDIF  
   init_var()
    if RecCount() == 0
     go bottom
     skip+1
     init_asivar()
   else
    GO TOP
      init_asivar()
   endif
   DEFINE BRUSH oBrush01 STYLE NULL
   DEFINE FONT  oFnt01 NAME "Arial" size 08,14 BOLD    DEFINE DIALOG oDlg01 FROM 12,10 TO 42,85  TITLE "Tipos de Modulos";
   COLOR RGB(255,255,255),RGB(51,51,255);
   STYLE nOR(WS_MINIMIZEBOX)
   @ 2.7,12 SAY oSay PROMPT "Codigo   :" OF oDlg01  FONT oFnt01 SIZE 40,10; oSay:lTransparent = .T.  
   @ 3,  14 GET gettipmod Var m_tipmod   OF oDlg01 PICTURE "@!";
         WHEN m->reg_nue=1 MESSAGE "Ingrese Tipo de Modulo" COLORS RGB(0,051,0),RGB( 255,255,204) UPDATE  
   @ 4.5,12 SAY oSay PROMPT "Nombre   :" OF oDlg01  FONT oFnt01 SIZE 40,10; oSay:lTransparent = .T.  
   @ 5,  14 GET getnombre Var m_nombre OF oDlg01  PICTURE "@!"  ;
      WHEN m->reg_edit = 1 MESSAGE "Ingrese el Nombre" COLORS RGB(0,051,0),nRGB( 255,255,204) UPDATE  //oDbf02:nombre 
    ACTIVATE DIALOG  oDlg01 CENTERED VALID NoSalir() ON INIT ( CREABARRA(0,0,1,385,35,oDlg01),ShowMenu(oDlg01))

FUNCTION CREABARRA(tmen,li,lc,lb,lr,oDlg01) Local oFon2,oFon1,oBar,oBtnBmp,li_r,li_c,li_p,li_p1,l_mayu
   li_r := 20;li_c:=1.4;li_p:=4;li_p1:=1.7;l_mayu:=0
   DEFINE MSGBAR OF oDlg01 PROMPT " "   
    DEFINE BUTTONBAR oBar12 _3D SIZE 26, 27 OF oDlg01 TOP 
   DEFINE BUTTON oBNew OF oBar12 FILENAME "reg_nue.bmp" FLAT MESSAGE  "Registro Nuevo";
      ACTION  (Autoper("A",tmen,oBar12)) TOOLTIP "Nuevo Registro "
   DEFINE BUTTON oBEdi OF oBar12 FILENAME  "reg_edit.bmp" FLAT MESSAGE  "Modificar Registro";
      ACTION (Autoper("M",tmen,oBar12)) TOOLTIP "Edita Registro" 
  DEFINE BUTTON oBFres OF oBar12 FILENAME  "reg_refr.bmp" FLAT  MESSAGE  "Refrescar Registro "; 
       TOOLTIP "Refrescar Regisro" GROUP
 
....
..
...
..
Function Autoper(Tper,tbar,Barr_1)
//X_PERNIV := "A-M-E-C-R"  /Adicion Modificacion Eliminar Consulta Reporte
 IF .not.Tper$"CA-BU-BE-HE-00"
  if .not.Tper$x_perniv
    alert("No Tiene Autorizacion")  //msg("No tiene Autorizacion")
    return(.t.)
  endif
 Endif
 if Tper=="A"  // cuando ingreso Registro Nuevo
    go bottom
    skip+1
    init_asivar()
   oBNew:Disable() 
   oBEdi:Disable()
   oBElim:Disable()
   oBGrab:Enable()
   oBCanc:Enable()
   oBBusq:Disable()
   oBFind:Disable()
   oBBrow:Disable()
   oBPrim:Disable()
   oBNext:Disable()
   oBAnt:Disable()
   oBUlti:Disable()
   oBFres:Enable()
   oBPrin:Disable()
   m->reg_edit:=1
   m->reg_nue:=1
   
 elseif Tper=="M"  // Edito Registro
   oBNew:Disable()
   oBEdi:Disable()
   oBElim:Disable()
   oBGrab:Enable()
   oBCanc:Enable()
   oBBusq:Disable()
   oBFind:Disable()
   oBBrow:Disable()
   oBPrim:Disable()
   oBNext:Disable()
   oBAnt:Disable()
   oBUlti:Disable()
   oBFres:Enable()
   oBPrin:Disable()
   m->reg_edit:= 1
   m->reg_nue :=0
   alert(m->reg_edit)

..
..
..
 sysrefresh() 

Function ShowMenu(oDlg01)  Local oMenu12
      MENU oMenu12
      MENUITEM "&Datos"
      MENU
         MENUITEM "&Nuevo" ;
            MESSAGE "Nuevo Registro"; 
             ACTION Accesos( alter("dsd"),0)  FILENAME   reg_nue.bmp"
         MENUITEM "&Modificacion/Edicion...";
           MESSAGE "Modifica Registro" ACTION  (Autoper("M",0,oBar12)) ;
            FILENAME  "reg_edit.bmp"
****




Me carga el formulario con los con la barra de Botones.
El cargue inicial si carga el dato del Primer Registro.
El problema es cuando Edito El registro para Modificar debo le cambio los valores a estas variables para habilitar los Get
  m->reg_edit:=1
  m->reg_nue:=1

Lo mismo Seria Cuando es Registro Nuevo se ejecuta la funcion init_asivar(). No Refresca el formulario.
Si Lo Ejecuto desde el menu Tambien Pasa Lo mismo

El problema es que no Refresca el formulario.

HE Utilizado varias formas Incusive pasar la Vble (@reg_edit,@reg_nue)


Gracias Si no puede sacar de esta duda o me falta alguna Instruccion.
[img]c:\formul.jpg[/img]
Post Reply