FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour PROBLEMAS CON ESCAPE ( EN UN GET)
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Tue Dec 18, 2007 09:28 PM

TENGO EL SIGUIENTE CODIGO:


FUNCTION CREACLIENTE(oDlgAnt,nCliente,aData)


LOCAL oDlg ,;
oLbx ,;
oNombre ,;
oDenom ,;
oApellido ,;
oCedula ,;
oCedLetra ,;
oRif ,;
oRifLetra ,;
oNit ,;
oButCont ,;
oButSalir ,;
oButModif ,;
bButCont ,;
oQuery ,;
cCommand ,;
lOk:=.f. ,;
oTpoCliente ,;
oTpoEstadoCivil ,;
oTpoGenero ,;
oTpoNacionalidad ,;
oTpoActividad ,;
oTpoClienteRegistro ,;
oIdDtsBanco ,;
oRifNat ,;
oRifNatLetra ,;
aIdDtsBanco ,;
oFechaRegistro ,;
oFechaNacimiento ,;
oTelefonoMovil ,;
oEmail ,;
oEdad ,;
nEdad ,;
oWeb ,;
oCodigoCuenta ,;
oStatusActivo ,;
aTpoActividad:={} ,;
bSeek ,;
bContinuar ,;
lModif:=.f. ,;
lCrea:=IIF(nCliente=nil,.t.,.f.)

LOCAL oInsDir,oElimDir

LOCAL oData,oOldData,oFKey

oFKey:=tvkey():NEW // CLASE TVKEY (control de teclas de funcion)

SETKEY(VK_F9, {|| msgalert("Imprimir")} )

DEFAULT oDlgAnt:=oWnd  // para cuando se crea primer cliente

aTpoActividad:=CREAARREGLO(oDtBase,'SELECT TpoActividad.IntIdTpoActividad,'+;
                                           'TpoActividad.VchDescripcion '+;
                                       'FROM '+cDTBase+'.TpoActividad '+;
                                       'ORDER BY TpoActividad.VchDescripcion')

aIdDtsBanco:=CREAARREGLO(oDtBase,'SELECT DtsBanco.IntIdDtsBanco,'+;
                                           'DtsBanco.VchDescripcion '+;
                                       'FROM '+cDTBase+'.DtsBanco '+;
                                       'ORDER BY DtsBanco.VchDescripcion')

oData   :=TCLIENTE(aData)
oOldData:=TCLIENTE(aData)

IF oData:nTpoCliente<>"1"
  oData:nTpoGenero     :="1"
  oData:nTpoEstadoCivil:="1"
  oData:nTpoActividad  :="1"
ENDIF

bContinuar:={|| IIF(( IIF(oData:nTpoCliente="1",( oOldData:cNombre   <> oData:cNombre   .OR.;
                                           oOldData:cApellido <> oData:cApellido .OR.;
                                           oOldData:cCedLetra <> oData:cCedLetra .OR.;
                                           oOldData:cCedula   <> oData:cCedula   .OR.;
                                           oOldData:nTpoEstadoCivil <> oData:nTpoEstadoCivil .OR.;
                                           oOldData:nTpoGenero      <> oData:nTpoGenero      .OR.;
                                           oOldData:nTpoActividad   <> oData:nTpoActividad ),;
                                         ( oOldData:cDenom    <> oData:cDenom    .OR.;
                                           oOldData:cRif      <> oData:cRif      .OR.;
                                           oOldData:cRifLetra <> oData:cRifLetra )) .OR.;
                     oOldData:cRifNat             <> oData:cRifNat             .OR.;
                     oOldData:cRifNatLetra        <> oData:cRifNatLetra        .OR.;
                     oOldData:cNit                <> oData:cNit                .OR.;
                     oOldData:nTpoCliente         <> oData:nTpoCliente         .OR.;
                     oOldData:nTpoNacionalidad    <> oData:nTpoNacionalidad    .OR.;
                     oOldData:nTpoClienteRegistro <> oData:nTpoClienteRegistro .OR.;
                     oOldData:nIdDtsBanco         <> oData:nIdDtsBanco         .OR.;
                     oOldData:dFechaRegistro      <> oData:dFechaRegistro      .OR.;
                     oOldData:dFechaNacimiento    <> oData:dFechaNacimiento    .OR.;
                     oOldData:cTelefonoMovil      <> oData:cTelefonoMovil      .OR.;
                     oOldData:cEmail              <> oData:cEmail              .OR.;
                     oOldData:cWeb                <> oData:cWeb                .OR.;
                     oOldData:cCodigoCuenta       <> oData:cCodigoCuenta       .OR.;
                     oOldData:cStatusActivo       <> oData:cStatusActivo) .AND. oData:NOTNULL(),.T.,.F.)}

IF lCrea
  lModif:=.t.
  cCommand:={||"INSERT INTO "+cDTBase+".DtsCliente(VchNombre,"+;
                                                    'VchApellido,'+;
                                                    'VchCedula,'+;
                                                    'VchRif,'+;
                                                    'VchNit,'+;
                                                    'IntIdTpoCliente,'+;
                                                    'IntIdTpoEstadoCivil,'+;
                                                    'IntIdTpoGenero,'+;
                                                    'IntIdTpoNacionalidad,'+;
                                                    'IntIdTpoActividad,'+;
                                                    'IntIdTpoClienteRegistro,'+;
                                                    'IntIdDtsBanco,'+;
                                                    'DtmFechaRegistro,'+;
                                                    'DtmFechaNacimiento,'+;
                                                    'VchTelefonoMovil,'+;
                                                    'VchEmail,'+;
                                                    'VchWeb,'+;
                                                    'VchCodigoCuenta,'+;
                                                    'TinStatusActivo) '+;
                                       "VALUES( "+bTrans(IIF(oData:nTpoCliente="1",oData:cNombre,oData:cDenom))+","+;
                                                  bTrans(oData:cApellido       )+","+;
                                                  bTrans(oData:cCedLetra+'-'+oData:cCedula)+","+;
                                                  bTrans(IIF(oData:nTpoCliente="1",oData:cRifNatLetra+'-'+oData:cRifNat,oData:cRifLetra+'-'+oData:cRif))+","+;
                                                  bTrans(oData:cNit            )+","+;
                                                  oData:nTpoCliente        +","+;
                                                  oData:nTpoEstadoCivil    +","+;
                                                  oData:nTpoGenero         +","+;
                                                  oData:nTpoNacionalidad   +","+;
                                                  ALLTRIM(oData:nTpoActividad)+","+;
                                                  oData:nTpoClienteRegistro+","+;
                                                  oData:nIdDtsBanco        +","+;
                                                  bTrans(oData:dFechaRegistro  )+","+;
                                                  bTrans(oData:dFechaNacimiento)+","+;
                                                  bTrans(oData:cTelefonoMovil  )+","+;
                                                  bTrans(oData:cEmail          )+","+;
                                                  bTrans(oData:cWeb            )+","+;
                                                  bTrans(oData:cCodigoCuenta   )+","+;
                                                  "1)"}

ELSE
  cCommand:={|| "UPDATE "+cDTBase+".DtsCliente "+;
                           "SET VchNombre               ="+bTrans(IIF(oData:nTpoCliente="1",oData:cNombre,oData:cDenom))+","+;
                                'VchApellido            ='+bTrans(oData:cApellido)+','+;
                                'VchCedula              ='+bTrans(oData:cCedLetra+'-'+oData:cCedula)+','+;
                                'VchRif                 ='+bTrans(IIF(oData:nTpoCliente="1",oData:cRifNatLetra+'-'+oData:cRifNat,oData:cRifLetra+'-'+oData:cRif))+','+;
                                'VchNit                 ='+bTrans(oData:cNit)+','+;
                                'IntIdTpoCliente        ='+oData:nTpoCliente+','+;
                                'IntIdTpoEstadoCivil    ='+oData:nTpoEstadoCivil+','+;
                                'IntIdTpoGenero         ='+oData:nTpoGenero+','+;
                                'IntIdTpoNacionalidad   ='+oData:nTpoNacionalidad+','+;
                                'IntIdTpoActividad      ='+oData:nTpoActividad+','+;
                                'IntIdTpoClienteRegistro='+oData:nTpoClienteRegistro+','+;
                                'IntIdDtsBanco          ='+oData:nIdDtsBanco+','+;
                                'DtmFechaRegistro       ='+bTrans(oData:dFechaRegistro)+','+;
                                'DtmFechaNacimiento     ='+bTrans(oData:dFechaNacimiento)+','+;
                                'VchTelefonoMovil       ='+bTrans(oData:cTelefonoMovil)+','+;
                                'VchEmail               ='+bTrans(oData:cEmail)+','+;
                                'VchWeb                 ='+bTrans(oData:cWeb)+','+;
                                'VchCodigoCuenta        ='+bTrans(oData:cCodigoCuenta)+','+;
                                'TinStatusActivo        ='+oData:cStatusActivo+' '+;
                     " WHERE "+cDTBase+".DtsCliente.IntIdDtsCliente = "+STR(nCliente)}
ENDIF
DEFINE  DIALOG  oDlg  RESOURCE "CLIENTES_EDT" OF oDlgAnt;
        TITLE   IIF(lCrea,'Incluir Cliente','Modifica Cliente')

oDlg:lHelpIcon  :=.f.  && Apago el Icono de Help

REDEFINE DBCOMBO oTpoCliente       VAR oData:nTpoCliente       ID 209 OF oDlg ;
         ITEMS SeparaArreglo(aTpoCliente,1); // LO QUE RETORNA
         LIST  SeparaArreglo(aTpoCliente,2); // LO QUE PRESENTA
         MESSAGE "Seleccione Tipo de Persona";
         ON CHANGE IIF(oData:nTpoCliente<>"1",(oData:nTpoGenero:="1",;
                                         oData:nTpoEstadoCivil:="1",;
                                         oData:nTpoActividad  :="1",;
                                         oDlg:Refresh()),.t.);
         WHEN lModif .and. lcrea

REDEFINE GET  oNombre  VAR oData:cNombre  ID 201 OF oDlg    ;
         MESSAGE "Coloque Nombre(s) del Cliente";
         PICTURE "@!";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oApellido VAR oData:cApellido  ID 202 OF oDlg    ;
         MESSAGE "Coloque Apellido(s) del Cliente";
         PICTURE "@!";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oTelefonoMovil VAR oData:cTelefonoMovil ID 215 OF oDlg    ;
         MESSAGE "Coloque Nro. Del Tel茅fono Movil del Cliente";
         PICTURE "@!";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE COMBOBOX oCedLetra VAR oData:cCedLetra ITEMS {"V","E"," "} ID 301;
         MESSAGE "Coloque Letra de la  C茅dula del Cliente";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oCedula VAR oData:cCedula  ID 203 OF oDlg    ;
         MESSAGE "Coloque Nro. C茅dula del Cliente";
         PICTURE "@!";
         WHEN oData:cCedLetra<>" " .and. lModif .AND. oData:nTpoCliente="1"

REDEFINE COMBOBOX  oRifNatLetra VAR oData:cRifNatLetra ITEMS {"J","V","E"," "} ID 302 OF oDlg    ;
         MESSAGE "Coloque Letra R.I.F. del Cliente";
         PICTURE "!";
         WHEN oData:cRifNatLetra<>" " .and. lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oRifNat VAR oData:cRifNat  ID 219 OF oDlg    ;
         MESSAGE "Coloque Nro. R.I.F. del Cliente";
         PICTURE "@!";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oFechaNacimiento     VAR oData:dFechaNacimiento  ID 205 OF oDlg    ;
         MESSAGE "Coloque Nro. Fecha de Nacimiento del Cliente";
         PICTURE "99/99/9999";
         VALID EVAL({|| nEdad:=IIF(oData:nTpoCliente="1",CAL_EDAD(oData:dFechaNacimiento,date()),0),;
                        oEdad:varput(nEdad),;
                        oEdad:Refresh(),;
                        .t.});
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE GET  oEdad  VAR nEdad  ID 221 OF oDlg    ;
         PICTURE "999";
         WHEN .f.

nEdad:=IIF(oData:nTpoCliente="1",CAL_EDAD(oData:dFechaNacimiento,date()),0)

REDEFINE GET  oFechaRegistro       VAR oData:dFechaRegistro    ID 211 OF oDlg    ;
         PICTURE "99/99/9999" when .f.

REDEFINE DBCOMBO oTpoEstadoCivil  VAR oData:nTpoEstadoCivil ID 206 OF oDlg ;
         ITEMS SeparaArreglo(aTpoEstadoCivil,1); // LO QUE RETORNA
         LIST  SeparaArreglo(aTpoEstadoCivil,2); // LO QUE PRESENTA
         MESSAGE "Seleccione Estado Civil del Cliente";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE DBCOMBO oTpoGenero       VAR oData:nTpoGenero       ID 208 OF oDlg ;
         ITEMS SeparaArreglo(aTpoGenero,1); // LO QUE RETORNA
         LIST  SeparaArreglo(aTpoGenero,2); // LO QUE PRESENTA
         MESSAGE "Seleccione G茅nero del Cliente";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE DBCOMBO oTpoActividad     VAR oData:nTpoActividad     ID 210 OF oDlg ;
         ITEMS SeparaArreglo(aTpoActividad,1); // LO QUE RETORNA
         LIST  SeparaArreglo(aTpoActividad,2); // LO QUE PRESENTA
         MESSAGE "Seleccione Tipo de Actividad del Cliente";
         WHEN lModif .AND. oData:nTpoCliente="1"

REDEFINE COMBOBOX  oRifLetra VAR oData:cRifLetra ITEMS {"J","V","E"," "}  ID 303 OF oDlg    ;
         MESSAGE "Coloque Letra R.I.F. del Cliente";
         PICTURE "!";
         WHEN lModif .AND. oData:nTpoCliente<>"1"

REDEFINE GET  oRif VAR oData:cRif        ID 204 OF oDlg    ;
         MESSAGE "Coloque Nro. R.I.F. del Cliente";
         PICTURE "@!";
         WHEN oData:cRifLetra<>" " .and. lModif .AND. oData:nTpoCliente<>"1"

REDEFINE GET  oDenom  VAR oData:cDenom   ID 223 OF oDlg    ;
         MESSAGE "Coloque Denominacion Comercial del Cliente";
         PICTURE "@!";
         WHEN lModif .AND. oData:nTpoCliente<>"1"

REDEFINE GET  oEmail VAR oData:cEmail        ID 212 OF oDlg    ;
         MESSAGE "Coloque Correo Electr贸nico del Cliente";
         WHEN lModif

REDEFINE GET  oWeb   VAR oData:cWeb          ID 213 OF oDlg    ;
         MESSAGE "Coloque Direcci贸n de la p谩gina Web del Cliente";
         WHEN lModif

REDEFINE DBCOMBO oIdDtsBanco VAR oData:nIdDtsBanco  ID 216 OF oDlg ;
         ITEMS SeparaArreglo(aIdDtsBanco,1); // LO QUE RETORNA
         LIST  SeparaArreglo(aIdDtsBanco,2); // LO QUE PRESENTA
         MESSAGE "Seleccione Tipo de Cliente";
         WHEN lModif
REDEFINE GET  oCodigoCuenta VAR oData:cCodigoCuenta ID 217 OF oDlg    ;
         MESSAGE "Coloque Nro. de Cuenta del Cliente";
         PICTURE "@!";
         WHEN lModif

REDEFINE GET  oStatusActivo VAR oData:cStatAct ID 218 OF oDlg    ;
         PICTURE "@!";
         WHEN   .F.

REDEFINE BUTTON  oButSalir ID  101  OF oDlg;
         MESSAGE "Sale";
         PROMPT "&Salir";
         ACTION  oDlg:End()

REDEFINE BUTTON  oButCont  ID  102  OF oDlg;
         MESSAGE IIF(lCrea,"Insertar y Salir","Almacenar y Salir");
         PROMPT "&Continuar";
         WHEN  eval(bContinuar);
         ACTION  (lModif:=.f.,lOk:=.t.,oDlg:End())

REDEFINE  BUTTON      oButModif      ID  103  OF oDlg;
          MESSAGE "Modificar";
          WHEN !lModif;
          ACTION  (lModif:=.t.,oDlg:Refresh(),oCedLetra:setfocus(.t.),;
                   oCedLetra:Click(),oDlg:setfocus())

oButCont:disable()

ACTIVATE DIALOG oDlg CENTER;
         ON INIT IIF(lModif,oButModif:HIDE(),);
         VALID IIF(lModif .or. Eval(bContinuar),MSGNOYES("Desea Salir","Atencion..."),.T.)

IF lOk
  IF lCrea
    IF VERIFRIFCLIENTE(oData:cRifLetra+'-'+oData:cRIF,oData:cCedLetra+'-'+oData:cCedula,oData:cRifNatLetra+'-'+oData:cRifNat) // verifica si RIF ya existe
      oQuery:=TMSQuery():New( oDTbase )
      oQuery:Open(eval(cCommand))
      oQuery:close()
    ENDIF
  ELSE
    oQuery:=TMSQuery():New( oDTbase )
    oQuery:Open(eval(cCommand))
    oQuery:close()
  ENDIF
ENDIF

oFkey:End()

RETURN lOk

Pues resulta que, cuando bContinuar es .T. , el cursor est谩 sobre un GET,
y se pulsa Escape, pregunta si desea salir, al reponder No, lo pregunta dos veces. (este comportamiento no sucede cuando est谩 sobre un dbcombo o acciono directamente el boton Salir), que puede estar sucediendo, en donde estoy metiendo la pata.

Ayudenme, que ya casi no tengo cabellos!!!

Angel

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Tue Dec 18, 2007 09:39 PM

Angel,

Que versi贸n de FWH usas ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Wed Dec 19, 2007 04:32 PM

La Versi贸n de fw es la 0709

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Wed Dec 19, 2007 08:40 PM
Angel,

Por favor prueba este ejemplo. Aqui funciona correctamente:
#include "FiveWin.ch"

function Main()

   local oDlg, cTest := "hello world"

   DEFINE DIALOG oDlg

   @ 2, 2 GET cTest   

   ACTIVATE DIALOG oDlg VALID MsgYesNo( "Want to end ?" )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Thu Dec 20, 2007 01:51 PM

Estimado Antonio,

Me parece que Hay que revisar la clase codigo de Tget, ya que efect煤a el ON CHANGE Retrasado (entre otros detallitos)

Solucion茅 mi problema utilizando la clase tget, de una versi贸n anterior (La que utiliza GianCarlos)

Aunque no fu茅 una soluci贸n muy elegante y es provisional, por lo menos puedo seguir adelante.

Felices fiestas y que la Salud, Paz, Felicidad y Prosperidad acompa帽en a Ti y a todos los compa帽eros del Mundo, Sinseramente les deseamos desde este humilde rinc贸n Venezolano.

Con Afecto Infinito:
Angel D. Blanco y los compa帽eros an贸nimos de esta oficina, en
Valencia, Venezuela

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Thu Dec 20, 2007 02:43 PM

Angel,

Env铆ame el PRG por email, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Wed Dec 26, 2007 02:35 AM

Estimado Colega:

Ya te envi茅 el programa (la clase tget modificada), Av铆same si te lleg贸.

Angel

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Wed Dec 26, 2007 08:49 AM

Angel,

Hemos recibido y revisado tu PRG. Efectivamente se estaba evaluando bPostKey desde KeyDown() y desde KeyChar(), y solo deb铆a hacerse desde KeyChar(). Gracias,

En cuanto a tus otros cambios, no nos parecen correctos. Puede ser que a ti te funcione bien, pero has eliminado c贸digo que debe permanecer en la Clase.

Cuando dejamos c贸digo comentado en la clase, por un tiempo, es para ver si se produce alg煤n tipo de efecto colateral en los cambios recientes y as铆 saber exactamente a que se corresponden los nuevos cambios. Si durante un tiempo no se reportan errores, entonces el c贸digo comentado se elimina definitivamente.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
PROBLEMAS CON ESCAPE ( EN UN GET)
Posted: Wed Dec 26, 2007 12:56 PM

Muchas Gracias. Antonio,

Ser铆a posible que me mandaras el c贸digo correcto de la clase, para Utilizarlo, (y As铆 evitar futuros entuertos :lol: ).

Mi Correo es BLANCOANDREANI@HOTMAIL.COM

Gracias de antemano, y espero que el ni帽o Jes煤s te haya premiado con algo, Je Je..

Felicidad
Angel

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql

Continue the discussion