FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour "PROBLEMILLA" CON TCBROWSE FWH
Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
"PROBLEMILLA" CON TCBROWSE FWH
Posted: Mon May 11, 2020 10:18 AM

Con la nueva versi贸n de FWH empec茅 a ver de vez en cuando que al seleccionar una columna para cambiar el 铆ndice activo, la cabecera con los t铆tulos de columnas eran tapadas por los datos del registro que supuestamente ocupan ese lugar.
No lo relacionaba m谩s que con un error m铆o en la posici贸n de los datos y /o refresh() del listbox, pero, no. He descubierto que con esta nueva versi贸n, si pulsas y mantienes el bot贸n izquierdo, puedes arrastrar (cursor hand) parte del listbox. y si lo haces sobre una cabecera, 茅sta es ocupada por un registro. As铆 si al seleccionar un 铆ndice tardas un pel铆n m谩s de la cuenta en soltar se reproduce este "error". Es f谩cil recuperarlo seleccionando cualquier registro, pero es un efecto muy feo.

Quiero deshabilitar esta opci贸n y que lo haga como en versiones antiguas de FiveWin, donde ese "arrastre" no se produc铆a.
Alguien sabe como hacerlo?
Gracias

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 04:18 AM

We will investigate this and get back to you.

At the same time, we would like to inform you that we did not modify twbrowse or tcbrowse in the last many years.

May we also know which older version of FWH are you referring to?

Regards



G. N. Rao.

Hyderabad, India
Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 07:54 AM

2.3

No obstante, la cuesti贸n no es que sea versi贸n nueva o vieja. La cuestion es que no deseo que exista ese arrastre con bot贸n izquierdo, ya que al ser el que se utiliza para cambiar de 铆ndice en el browse se produce el efecto indeseado de que los datos tapen los t铆tulos.

Gracias

Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 08:24 AM
En este primer gr谩fico se ven perfectamente las cabeceras:


En este otro, una vez arrastrado con bot贸n izquierdo se aprecia como los datos suben y tapan esas cabeceras

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 02:01 PM
Como haces, asi? By: kapiabafwh@gmail.com

Code (fw): Select all Collapse
#include "FiveWin.Ch"
#include "TCBrowse.ch"

MEMVAR cPesq
STATIC oWnd

FUNCTION TCBCADET( oDbf )

   LOCAL oBrw, nI, aTestData, uVar, oBtn, oFont, oFnt, oIco
   LOCAL oWnd, oDlg, oBar, oMsg, oBrush, oBmpBrush
   LOCAL cName := "Testando...", oSay
   LOCAL nLinhaDialog   := 5    // Linha Que Come鈥 a Dialog
   LOCAL nColunaDialog  := 5    // Coluna Que Come鈥 a Dialog
   LOCAL nAlturaDialog  := 390  // Altura da Dialog
   LOCAL nLarguraDialog := 745  // Largura da Dialog
   LOCAL nLinhaBrowse   := 38   // Linha que Come鈥 a Browse
   LOCAL nColunaBrowse  := 10   // Coluna que Come鈥 a Browse
   LOCAL cTitle         := "Browse Para Pesquisa " + ;
                           "Incremental dos Clientes!"

   LOCAL acIndices := {}
   LOCAL cIndice   := ""

   PUBLIC cPesq

   cPesq := ""

   IF NetUse( "CADETIQ", .T. )
      OrdListAdd( "CADETIQ", "RAZ_MATRIC", "DEST_NOME", "END" )
      DATABASE oDbf
      oDbf:Load()
      oDbf:SetBuffer( .T. ) // Assim, .T. a Op鈥∶唎 (Cancelar) Funciona.
      acIndices := GetIndices()
      cIndice   := acIndices[ 2 ]
   ELSE
      MsgStop( "Banco de Dados Bloqueado", "Cuidado!" )
      RETURN NIL
   ENDIF

   SET ORDER TO 2

   DBGOTOP()

   DEFINE FONT oFnt  NAME "Arial" SIZE 0, 14 BOLD
   DEFINE FONT oFont NAME "Arial" SIZE 0, 15 BOLD

   DEFINE ICON OICO FILE ".\BRASIL__.BMP"

   DEFINE BITMAP oBmpBrush FILE "MARMORE.BMP"

   DEFINE DIALOG oDlg FROM nLinhaDialog, nColunaDialog ;
      TO nAlturaDialog, nLarguraDialog OF oWnd         ;
      TITLE cTitle                                     ;
      PIXEL                                            ;
      FONT oFnt                                        ;
      ICON oIco                                        ;
      STYLE nOR( DS_MODALFRAME )

   oDlg:lHelpIcon := .F.

   @ nLinhaBrowse, nColunaBrowse COLUMN BROWSE oBrw  OF oDlg ;
      SIZE 350, 135                                      ; // On Left
      ON LEFT DBLCLICK Cadetiq( oDbf )                   ;
      MESSAGE "Digite Nome Para Fazer a Pesquisa"        ;
      Alias ( oDbf:cAlias )                              ;
      COLOR CLR_BLACK, CLR_HGRAY                         ;
      PIXEL

   oBrw:bLDblClick := { || Cadetiq( oDbf ), oBrw, oSay }

   oBrw:bKeyChar = { | nKey, nFlags |             ;
      If( nKey # 13,             ;
          ( oBrw:Refresh(),      ;
            oBrw:SetFocus(),     ;
            oBrw:DrawSelect() ), ;
            Cadetiq( oDbf ) ), oBrw, oSay }

   obrw:bKeyDown := { | nKey, nFlags | Incremental( nKey, ;
      ( oDbf:cAlias ), oBrw, oSay ) }

   oBrw:nColOrder  := 20
   oBrw:cOrderType := "C"
   oBrw:cSeek      := ""

   oBrw:nClrBackHead := CLR_LGREEN
   oBrw:nClrForeHead := CLR_HRED
   oBrw:aJustify     := { .F. , .F. }

   oBrw:lLogicDrop := .T.
   oBrw:lNoHScroll := .F.
   oBrw:nAdjColumn :=  3
   oBrw:nFreeze    :=  1
   oBrw:lMChange   := .F.

   ADD COLUMN TO BROWSE oBrw      ;   // O Browse
      DATA Recno()               ;   // array element number
      SIZE 60                    ;   // Tamanho da Fonte/Dimens脝o
      NOBAR                      ;   // Sem barra luminosa(Cursor)
      CENTER                     ;   // Centraliza
      COLOR CLR_BLACK, CLR_HGRAY ;   // As Cores
      HEADER OemToAnsi( "Registro" ) // O Cabe鈥lho...

   ADD COLUMN TO BROWSE oBrw            ;
      DATA ( oDbf:cAlias )->Raz_Matric ;
      HEADER OemToAnsi( "Matr隆cula " ) ;
      SIZE 100 PICTURE "99999"         ;
      COLOR CLR_BLACK, CLR_HRED        ;
      CENTER                           ;

      ADD TO BROWSE oBrw                                     ;
      DATA PadR( Trim( ( oDbf:cAlias )->Dest_Nome ), 50 ) ;
      HEADER OemToAnsi( "Nome do Cliente" )              ;
      COLOR CLR_BLACK, CLR_HCYAN                         ;
      EDIT MESSAGE "Nome do Cliente no Banco de Dados"   ;
      SIZE 400 PICTURE "@S50"

   ADD COLUMN TO oBrw                            ;
      DATA ( oDbf:cAlias )->End                 ;
      HEADER OemToAnsi( "Endere鈥 do Cliente" ) ;
      COLOR CLR_BLACK, CLR_LGREEN               ;
      SIZE 400

   ADD COLUMN TO oBrw                          ;
      DATA ( oDbf:cAlias )->Bai               ;
      HEADER OemToAnsi( "Bairro do Cliente" ) ;
      COLOR CLR_BLACK, CLR_HRED               ;
      SIZE 200

   ADD COLUMN TO oBrw                      ;
      DATA ( oDbf:cAlias )->Cid           ;
      HEADER OemToAnsi( "Cidade/Estado" ) ;
      COLOR CLR_BLACK, CLR_HGREEN         ;
      SIZE 200

   ADD COLUMN TO oBrw                      ;
      DATA ( oDbf:cAlias )->Cep           ;
      HEADER OemToAnsi( "C垄digo Postal" ) ;
      COLOR CLR_BLACK, CLR_HGREEN         ;
      SIZE 200

   @ 03.2, 1 BUTTON "&Saida" OF oDlg     ;
      SIZE 30, 12 ACTION oDlg:End() ;
      MESSAGE "Sair do Programa"   ;
      PIXEL

   @ 17.2, 1 BUTTON "&Editar" OF oDlg  ;
      SIZE 30, 12                 ;
      ACTION Cadetiq( oDbf )     ;
      MESSAGE "Editar os Clientes Para Modificar" ;
      PIXEL

   @ 0.2, 50 SAY "Digite Letras Iniciais Para Pesquisa " + ;
      "Incremental do Nome Com No "           + ;
      "Maximo de 20 Digitos." + CRLF           + ;
      "<Click> Duplo Para Editar, <ESC> Para Abortar, " + ;
      "Use BackSpace Para Apagar Letras." ;
      OF oDlg SIZE 260, 15 ;
      FONT oFont          ;
      PIXEL               ;
      CENTER              ;
      COLOR CLR_CHOCOLATE, CLR_YELLOW

   @ 20, 50 SAY "Digite Nome: " Size 100, 08 OF oDlg ;
      PIXEL                                   ;
      FONT oFont                              ;
      COLOR CLR_HBLUE, CLR_CHOCOLATE

   @ 20, 112 SAY oSay PROMPT cPesq Size 100, 08 OF oDlg ;
      PIXEL                                     ;
      COLOR CLR_HRED, CLR_VERDEAGUA             ;
      CENTERED

   @ 20, 212 SAY OemToAnsi( "  Suporta No M聽ximo 20 D隆gitos." ) ;
      OF oDlg SIZE 100, 08 ;
      FONT oFont          ;
      PIXEL               ;
      CENTER              ;
      COLOR CLR_RED, CLR_CHOCOLATE

   oBrw:bChange := {|| cPesq := "" , oSay:Refresh() }

   oBrw:ResetBarPos()
   oBrw:DrawSelect() // showit

   SET FONT OF oBrw TO oFont // ListBox
   SET FONT OF oDlg TO oFnt  // Dialog

   ACTIVATE DIALOG oDlg CENTERED ;
      ON PAINT MEUBRUSH( oDlg, oBmpBrush )

   DbCloseAll()

   oFont:End()
   oFnt :End()

   RELEASE BITMAP oBmpBrush

RETURN nil

FUNCTION Incremental( nKey, Alias, oBrw, oSay, oLbx )

   LOCAL nOldPos := ( Alias )->( Recno() )

   IF nKey = VK_ESCAPE

      oBrw:oWnd:End()

   ENDIF

   IF nKey == VK_BACK

      IF Len( cPesq ) > 0
         cPesq := Left( cPesq, Len( cPesq ) - 1 )
      ELSE
         Tone( 500, 1 )
         RETURN( .F. )
      ENDIF

   ENDIF
   IF ( nKey >= 32 .AND. nKey <= 255 ) .OR. ;
         nKey = VK_BACK

      IF nKey != VK_BACK

         cPesq += UPPER( Chr( nKey ) )

      ENDIF

      IF !( Alias )->( DbSeek( cPesq ) )

         cPesq := Left( cPesq, Len( cPesq ) - 1 )

         MsgStop( "Aten莽茫o: Esta Combina莽茫o de Letras" + CRLF + ;
                  "N茫o Existe, Tente Outra." )

         DbGoto( nOldPos )
         Tone( 500, 1 )
         oBrw:Refresh()
         RETURN( .F. )

      ENDIF

      oBrw:Refresh()

   ENDIF

   IF oSay != Nil

      oSay:cTitle( cPesq ) // Mostra o que foi digitado

   ENDIF

RETURN( .T. )

// FIM DO PROGRAMA


Saludos.
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 04:42 PM

REDEFINE LISTBOX OBRW ;
FIELDS ;
COMPANIA,CODIGO,CIF ID 4003 ;
HEADERS "NOMBRE", "CGO","C.I.F" ;
ON CHANGE(COGE_COMPANIA(),REFRESCA_COMPANIA(),capturalogo(odl,ologo,"COMPANIA")) ;
ON RIGHT CLICK (MENUCIA(NROW,NCOL,obRW,"COMPANIA",OLOGO)) ;
OF odl FONT OFONT10 COLOR LETRAS,FONDO
OBRW:BKEYDOWN:={ | NKEY | IF(NKEY#13, ;
(BUSCA_TIPO("COMPANIA", NKEY, OBRW),COGE_COMPANIA(),REFRESCA_COMPANIA(),CAPTURALOGO(odl,oLOGO,"COMPANIA"),osayc:Refresh()),) }

Este es el c贸digo que ten铆a antes con la versi贸n 2.3 y el mismo que tengo ahora con la 煤ltima versi贸n FWH. En la 2.3 la opci贸n de arrastrar con bot贸n izquierdo no se ejecutaba y ahora s铆.

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 04:57 PM
Mr. Karinha

For providing a solution to Mr. Pacotre, we first need to reproduce the problem pointed out by him.
For this purpose, such a very long program is not necessary.

The following two-line program is enough.
Code (fw): Select all Collapse
#include "fivewin.ch"
function Main()
   USE CUSTOMER
   BROWSE()
return nil




This is the problem.
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 05:09 PM
Mr Pacotre

Thanks for pointing out this problem.

FWH introduced Kinetic scrolling to TWBrowse in August 2009. TCBrowse is derived from TWBrowse and so, this applies to TCBrowse also.

This problem is because of a bug in the implementation of kinetic scrolling. This existed from that time itself, but was never noticed by us and reported.

Our advice to you is to include this line of code in the top of the Main() function of your program:
Code (fw): Select all Collapse
   TWBrowse():lKinetic := .f.

With this, the kinietic scrolling is disabled and your program functions like before.
You will not see this problem in your application.
Regards



G. N. Rao.

Hyderabad, India
Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 05:16 PM

Exactamente, ese es el problema. Como se puede resolver?

Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 05:18 PM

TWBrowse():lKinetic := .f.

Ok. Lo probar茅.

Gracias a todos.

Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Tue May 12, 2020 05:21 PM

Perfecto!!!! el fallo ha desaparecido.

Much铆simas gracias por vuestra atenci贸n.

Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Wed May 20, 2020 05:51 PM

Buenas tardes:

Por aqu铆 ando otra vez incordiando.

Necesito ayuda.
Estoy trabajando con XBROWSE, y necesito saber como puedo guardar la 煤ltima configuraci贸n para que la pr贸xima vez que arranque lo haga de la misma forma. Las columnas que he movido, las que he quitado, etc. que permanezcan tal como las dejo.

Como puedo hacerlo?

Gracias

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Wed May 20, 2020 11:54 PM
pacotre wrote:Buenas tardes:

Por aqu铆 ando otra vez incordiando.

Necesito ayuda.
Estoy trabajando con XBROWSE, y necesito saber como puedo guardar la 煤ltima configuraci贸n para que la pr贸xima vez que arranque lo haga de la misma forma. Las columnas que he movido, las que he quitado, etc. que permanezcan tal como las dejo.

Como puedo hacerlo?

Gracias


Code (fw): Select all Collapse
cState := oBrw:SaveState()

Save cState in any text file

Next time after creating browse
Code (fw): Select all Collapse
oBrw:RestoreState( cState )
Regards



G. N. Rao.

Hyderabad, India
Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Thu May 21, 2020 07:43 AM

Muchas gracias:
Ya me has alegrado el dia :D

Posts: 40
Joined: Fri Jan 10, 2014 10:38 AM
Re: &quot;PROBLEMILLA&quot; CON TCBROWSE FWH
Posted: Fri May 22, 2020 10:45 AM

Otra duda:
Hay forma de condicionar con xbrowse las columnas?.
Me explico. Hasta ahora lo que he visto es que me muestra todos los campos completos con uData. He visto que puedo cambiar las cabeceras de columnas con Header.
Necesito indicarle, como lo hac铆a con Listbox, que un determinado campo me lo muestre en dos columnas distintas:
LEFT(Field1,10) y RIGHT(Field1,10) como si fueran dos campos,y en otros que solo muestre los primeros 25 caracteres, LEFT(Field2,25), etc.

Esto no s茅 hacerlo con xBrowse. Como puedo condicionar los datos a mostrar en el Browse?.

Teneis que disculparme, pero me he pasado directamente de la prehistoria de FW con la V 2.3 a 茅sta nueva y me he perdido mucho en el camino.