Page 1 of 2
"PROBLEMILLA" CON TCBROWSE FWH
Posted: Mon May 11, 2020 10:18 am
by pacotre
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
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 4:18 am
by nageswaragunupudi
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?
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 7:54 am
by pacotre
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
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 8:24 am
by pacotre
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
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 2:01 pm
by karinha
Como haces, asi? By:
kapiabafwh@gmail.com
Code: Select all
#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 a Dialog
LOCAL nColunaDialog := 5 // Coluna Que Come‡a a Dialog
LOCAL nAlturaDialog := 390 // Altura da Dialog
LOCAL nLarguraDialog := 745 // Largura da Dialog
LOCAL nLinhaBrowse := 38 // Linha que Come‡a a Browse
LOCAL nColunaBrowse := 10 // Coluna que Come‡a 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‡Æo (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‡alho...
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‡o 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.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 4:42 pm
by pacotre
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í.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 4:57 pm
by nageswaragunupudi
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: Select all
#include "fivewin.ch"
function Main()
USE CUSTOMER
BROWSE()
return nil
This is the problem.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 5:09 pm
by nageswaragunupudi
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:
With this, the kinietic scrolling is disabled and your program functions like before.
You will not see this problem in your application.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 5:16 pm
by pacotre
Exactamente, ese es el problema. Como se puede resolver?
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 5:18 pm
by pacotre
TWBrowse():lKinetic := .f.
Ok. Lo probaré.
Gracias a todos.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Tue May 12, 2020 5:21 pm
by pacotre
Perfecto!!!! el fallo ha desaparecido.
Muchísimas gracias por vuestra atención.
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Wed May 20, 2020 5:51 pm
by pacotre
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
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Wed May 20, 2020 11:54 pm
by nageswaragunupudi
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
Save cState in any text file
Next time after creating browse
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Thu May 21, 2020 7:43 am
by pacotre
Muchas gracias:
Ya me has alegrado el dia
Re: "PROBLEMILLA" CON TCBROWSE FWH
Posted: Fri May 22, 2020 10:45 am
by pacotre
Otra duda:
Hay forma de condicionar con xbrowse las columnas?.
Me explico. Hasta ahora lo que he visto es que me muestra todos _ 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 _,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.