Page 1 of 1

Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 10:31 am
by JoseLuis
Buenas
Tengo una aplicación un poco antigua, que tengo que modificar.

En ella estoy utilizando twbrowse, y me ocurre que en una columna, y sólo en esa columna no me aparece el dato hasta que paso con el ratón por encima.

Esa columna está construida como las demás.

Pongo una foto:
Antes de pasar el raton:
Image

Despues de pasar el raton:
Image

Columna F/E

Un Saludo

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 12:12 pm
by karinha
Muestra el código. És un campo númerico?

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 4:09 pm
by JoseLuis
El dato es tipo caracter.
Éste dato viene de una consulta mysql

Lo curioso es que si quito ésta columna, me ocurre lo mismo con la siguiente.

Codigo del listbox:

Code: Select all

  TWBrowse():lHScroll:= .F.
  @ 30, 0  LISTBOX oLbx FIELDS aHBitmaps[ Max( 1, val((aAlias[24])->Estado) ) ],;
                               (aAlias[24])->Albaran,;
                               dtoc((aAlias[24])->Fecha),;
                               oemtoansi((aAlias[24])->pro),;
                               (aAlias[24])->pobla,;
                               (aAlias[24])->CR,;
                               oemtoansi((aAlias[24])->prou),;
                               (aAlias[24])->pobla1,;
                               transform(((aAlias[24])->baseimpo),"@Z 99,999.99"),;
                               transform(((aAlias[24])->kkilos),"@Z 999"),;
                               transform(((aAlias[24])->kilos),"@Z 99,999"),;
                               (aAlias[24])->factura,;
                               (aAlias[24])->Codart,;   
                               iif ((aAlias[24])->Tipo=1,'Credito','Contado'),;
                               transform(((aAlias[24])->Orden),"@Z 9999999"),;
                               iif((aAlias[33])->(Dbseek(str((aAlias[24])->Orden,7))),aHBitmap1[1]," " ),;
                               iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,1))," "),;  // HACE LA LLAMADA A MYSQL, ESTA COLUMNA SE MUESTRA AL PASAR SOBRE ELLA
                               iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,2))," "),;
                               iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,3))," "),;
                               (aAlias[24])->nConductor,;
                               (aAlias[24])->N_Reexp,;
                               (aAlias[24])->Spro,;
                               (aAlias[24])->Graba,;
                               (aAlias[24])->Operador;
                               HEADERS  " F "," Numero ", " Fecha ", " Cliente ", "Pobla", "T","Origen/Destino", "Pobla", " Importe ", " Bult. ", " Kilos "," Factura "," Tarifa ","Tipo","Orden","In" ,"F/E","H/E","C/E"," Conductor " ,"Reexpedido","SPro","Fhora"," Operador ";
                               FIELDSIZES  15,        50,        55,         220,     120,  15,             220,     120,          42,        25,        32,         45,        35,    45,     50,   15,   55,   35,   25,           200,         120,   120,    120,         100;
                               ALIAS aAlias[24];
                               CURSOR oCurdedo;
                               COLOR CLR_BLACK, nRGB(226,226,208);
                               ON LEFT DBLCLICK  (iif(!(aAlias[24])->(eof()) .and. Publicas:cAccesoM,(cTitulo:="Visualización de Albaranes ",Entalba1(cTitulo,"V",,aAlias),oLbx:Refresh()),.T.));
                               OF oDlg;
                   PIXEL
Codigo de la busqueda:

Code: Select all

//---------------------------------
FUNCTION Buscasql(oBrw,cBuscar,oRs,tipo)
   lOCAL valor
   LOCAL nLen:=Len(cBuscar)
   STATIC nLenAnt
   DEFAULT nLenAnt:=0
   IF Len(cBuscar)>1
    IF(nLenAnt>nLen,oRs:MoveFirst(),)
        oRs:Find( "NO_PEDIDO LIKE '"+cBuscar+"*'",,1)
        if oRs:Eof
            oRs:MoveFirst()
            valor:=" "
        else
            do case
                case tipo=1
                    valor:= oRs:Fields("FECHAPOD"):Value
                case tipo=2
                    valor:= oRs:Fields("HORAPOD"):Value
                case tipo=3
                    valor:= oRs:Fields("FIRMAPOD"):Value
            end case
        endif
//  ELSE
//      oRs:MoveFirst()
//      IF !Empty(cBuscar)
//          oRs:Find( "NO_PEDIDO LIKE '"+cBuscar+"*'",,1)
//      ENDIF
   ENDIF
   nLenAnt:=nLen
RETURN valor

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 4:53 pm
by karinha
TWBrowse():lHScroll:= .F. ?? esto és la WBROWSE.PRG de Hernan? Porquê no usas Nativa és mejor?

Code: Select all

   Donde esta el:

   oBrw:GoBottom()
   oBrw:Refresh()
   oBrw:Gotop()

   ó solo:

   oBrw:Refresh()
 
Saludos.

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 7:49 pm
by karinha
Aqui:

Code: Select all

FUNCTION Buscasql(oLbx,cBuscar,oRs,tipo)  // no oBrw

y use el refresh()

 
Saludos.

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 8:11 pm
by cnavarro
Has probado a no ponerle el picture "@Z" ?

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Tue Apr 16, 2019 10:48 pm
by JoseLuis
Buenas

El Refresh() sí lo tengo en el código.

También he probado el tema del picture, pero sigue igual.

Lo curioso es que siempre ocurre con la primera linea que hace la llamada a la función que busca en la tabla mysql (buscasql()), es decir que tengo

Code: Select all

                                iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,1))," "),;  // HACE LA LLAMADA A MYSQL, ESTA COLUMNA SE MUESTRA AL PASAR SOBRE ELLA
                               iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,2))," "),;
                               iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,3))," "),;
Esto solo ocurre con la primera, si la elimino, ocurre con la segunda, y si al contrario pongo una columna antes que estas tres, ocurre con ésta que pongo, y estas tres las pinta correctamente

Es curioso.

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Wed Apr 17, 2019 8:13 am
by JoseLuis
Buenas

Para salir del paso, en vista de que siempre, la primera consulta que hago es la que tiene el problema de refresco, lo que he optado es por hacer dos consultas seguidas sobre el mismo dato y para la primera columna, y todo correcto, al devolverme el valor en la segunda consulta, se pinta correctamente.

Hago así

Code: Select all

                   iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,1),buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,1) )," "),;
                   iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,2))," "),;
                   iif(conexion = "S",(buscasql(oLbx,transform(((aAlias[24])->Orden),"@Z 9999999"),oRs,3))," "),;
 
No lo entiendo, pero así se queda.

Saludos

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Wed Apr 17, 2019 12:19 pm
by karinha
Intenta con este modelo o cambie a xBrowse().

Code: Select all

#Include "FiveWin.ch"

REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto

FUNCTION LLAMADO()

   ...

   SELECT( DBCADPROPO )
   SET ORDER TO 01
   GO TOP

   cAlias := ALIAS()

   REDEFINE LISTBOX oLbx FIELDS                                              ;
            ( cAlias )->PROPOCOD                                           , ; 
            ( cAlias )->CONTRCOD                                           , ;
            XPADL( ALLTRIM( STR( ( cAlias )->CLIENCOD,12,0 ) ), 12 )       , ;
            ( cAlias )->CLIENTE                                            , ;
            ( cAlias )->END_PROP                                           , ; 
            ( cAlias )->BAIR_PROP                                          , ; 
            ( cAlias )->CEP_PROP                                           , ; 
            ( cAlias )->ZELAD_RESP                                         , ; 
            ( cAlias )->FONE_ZRESP                                         , ; 
            ( cAlias )->SINDI_PROP                                         , ; 
            ( cAlias )->FONE_SINDI                                         , ; 
            ( cAlias )->FAX_SINDIC                                         , ; 
            SPACE(01)                                                        ; 
            HEADERS ( OemToAnsi( "PROPOSTA:"   ) )                         , ;
                    ( OemToAnsi( "CONTRATO:"   ) )                         , ;
                    ( OemToAnsi( "CLIENTE  N§" ) )                         , ;
                    ( OemToAnsi( "NOME CLIENTE:" ) )                       , ;
                    ( OemToAnsi( "ENDERE€O:" ) )                           , ;
                    ( OemToAnsi( "BAIRRO" ) )                              , ;
                    ( OemToAnsi( "C.E.P.:" ) )                             , ;
                    ( OemToAnsi( "ZELAD/RESP " ) )                         , ;
                    ( OemToAnsi( "TEL ZEL/RESP:" ) )                       , ;
                    ( OemToAnsi( "SINDICO:" ) )                            , ;
                    ( OemToAnsi( "FONE SINDICO:" ) )                       , ;
                    ( OemToAnsi( "FAX SINDICO:" ) )                        , ;
                    ( OemToAnsi( " - "         ) )                           ; 
            FIELDSIZES  90, 90, 120, 400, 400, 200, 90, 300, 300, 200, 210,  ;
                       210, 01                                               ;
            COLOR CLR_BROWN, CLR_LGREEN FONT oFnt UPDATE ID 101 OF oDlg      ;
            ON DBLCLICK( GETCHAMADO( .F., oLbx  ),                           ;
                         oLbx:SetFocus(), oLbx:Refresh(), oLbx:DrawSelect() )

   // Tooltip com imagem. Pode-se usar 1, 2 e 3.
   oLbx:cTooltip :={ "Click na ListBox Para Editar...",                       ;
                     "CADASTRO DE DADOS PARA PROPOSTA", 1, CLR_WHITE, CLR_HBLUE }

   //-----------------------------------------------------------------------// 
   oLbx:nClrBackHead  := CLR_LGREEN
   oLbx:nClrText      := {|| nRGB( 000, 000, 000 ) }
   oLbx:nClrBackFocus := CLR_WHITE
   oLbx:nClrForeFocus := CLR_HRED
   oLbx:nClrForeHead  := CLR_BLACK
   oLbx:nClrPane      := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0, ;
                              CLR_WHITE, CLR_LGRAY ) }
   oLbx:nColAct       := 4
   oLbx:nLineStyle    := 3
   oLbx:lCellStyle    := .T.
   // Justifica: .F. = Esquerda .T. = Centro
   oLbx:aJustify := { .T., .T., .T., .F., .F., .F., .F., .F., .F., .F., .F., ;
                           .F., .F. } 
   oLbx:lMChange      := .F.
   oLbx:SetFocus()
   oLbx:Refresh()
  ...
RETURN NIL

FUNCTION GETLLAMADO( lAppend, oLbx  )

  ...

RETURN NIL
 
Saludos.

Re: Twbrowse Refresca al pasar por encima el raton

Posted: Fri Apr 26, 2019 5:38 pm
by VitalJavier
Que tal, Yo utilizo xbrowse

Code: Select all

       oBrow:aCols[09]:bStrData := {|| nArti1 := RetornaPrecioArti1() }
 
Aqui me funciona muy bien.