Page 1 of 1

xBrowse refresh problem

Posted: Sun Mar 04, 2018 7:16 pm
by Wanderson
Hi all, I have this code:

Use VENDA INDEX VENDA Shared New alias "VENDA" via "DBFCDX"
Database oVenda

...

oBrwPed := TXBrowse():New( oDlgPed )
oBrwPed:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrwPed:CreateFromResource( 109 )
oBrwPed:nColDividerStyle := 5 //LINESTYLE_BLACK // COLUNAS
oBrwPed:lColDividerComplete := .T.
oBrwPed:nHeaderHeight :=30
oBrwPed:nStretchCol := STRETCHCOL_LAST
oBrwPed:cAlias := "VENDA"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || VENDA->NUMERO }
oCol:cHeader := "PEDIDO"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || DTOC(VENDA->DATA)}
oCol:cHeader := "DATA"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || VENDA->HORA }
oCol:cHeader := "HORA"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || VENDA->CNPJCPF }
oCol:cHeader := "CNPJ/CPF"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || SUBSTR(VENDA->CLIENTE,1,35) }
oCol:cHeader := "NOME CLIENTE"

oCol := oBrwPed:AddCol()
oCol:bStrData := { || Tran(VENDA->VALOR,"@E 9,999,999.99") }
oCol:cHeader := "BRUTO"
oCol:nDataStrAlign := AL_RIGHT

oCol := oBrwPed:AddCol()
oCol:bStrData := { || Tran(VENDA->DESCONTO,"@E 9,999,999.99") }
oCol:cHeader := "DESCONTO"
oCol:nDataStrAlign := AL_RIGHT

oCol := oBrwPed:AddCol()
oCol:bStrData := { || Tran(VENDA->LIQUIDO,"@E 9,999,999.99") }
oCol:cHeader := "LIQUIDO"
oCol:nDataStrAlign := AL_RIGHT


oCol := oBrwPed:AddCol()
oCol:bStrData := { || VENDA->VP }
oCol:cHeader := "V/P"
oCol:nDataStrAlign := AL_CENTER
oCol:nHeadStrAlign := AL_CENTER


oCol := oBrwPed:AddCol()
oCol:bStrData := { || DTOC(VENDA->DTBAIXA)}
oCol:cHeader := "DT BAIXA"

oBrwPed:SetoDbf(oVenda)

I some point i need to delete one record and I use:

oVenda:Delete()

oBrwPed:Refresh()

In File the record is deleted but the xbrowse still display the record, if i close and open again xbrowse are empty.
How I can refresh the xbrowser properly after delete record?

Thanks in advance.

Re: xBrowse refresh problem

Posted: Mon Mar 05, 2018 6:27 am
by nageswaragunupudi
Please use the recommended way to define the xbrowse like this

Code: Select all


FWNumFormat( "E", .t. )  // Keep this at the beginning of your Main prg

Use VENDA INDEX VENDA Shared New alias "VENDA" via "DBFCDX"
Database oVenda


//  DEFINE DIALOG ....

REDEFINE oBrwPed ID 109 OF oDlgPed DATASOURCE oVenda ;
   COLUMNS "PEDITO", "DATA", "HORA", "CNPJCPF", "LEFT(CLIENTE,35)", "VALOR", "DESCONTO", "LIQUIDO", "VP", "DTBAIXA" ;
   HEADERS nil,      nil,     nil,  "CNPJ/CPF", "NOME CLIENTE",     "BRUTO", nil,         nil,     "V/P","DT BAIXA" ;
   LINES
   
WITH OBJECT oBrwPed
   :nMarqueeStyle       := MARQSTYLE_HIGHLROW
   :nColDividerStyle    := 5 //LINESTYLE_BLACK // COLUNAS
   :nHeaderHeight       :=30 
   :nStretchCol         := STRETCHCOL_LAST 
   WITH OBJECT aCols[ 9 ]
      :nDataStrAlign    := AL_CENTER
      :nHeadStrAlign    := AL_CENTER
   END
END

ACTIVATE DIALOG oDlgPed
 

Now when you want to delete a record,
CALL

Code: Select all

oBrwPed:Delete()
 
No need to call Refresh() also.

Note: XBrowse automatically assigns the picture clause and also decides left/right aligns

Re: xBrowse refresh problem

Posted: Mon Mar 05, 2018 4:06 pm
by Wanderson
nageswaragunupudi wrote:Please use the recommended way to define the xbrowse like this

Code: Select all


FWNumFormat( "E", .t. )  // Keep this at the beginning of your Main prg

Use VENDA INDEX VENDA Shared New alias "VENDA" via "DBFCDX"
Database oVenda


//  DEFINE DIALOG ....

REDEFINE oBrwPed ID 109 OF oDlgPed DATASOURCE oVenda ;
   COLUMNS "PEDITO", "DATA", "HORA", "CNPJCPF", "LEFT(CLIENTE,35)", "VALOR", "DESCONTO", "LIQUIDO", "VP", "DTBAIXA" ;
   HEADERS nil,      nil,     nil,  "CNPJ/CPF", "NOME CLIENTE",     "BRUTO", nil,         nil,     "V/P","DT BAIXA" ;
   LINES
   
WITH OBJECT oBrwPed
   :nMarqueeStyle       := MARQSTYLE_HIGHLROW
   :nColDividerStyle    := 5 //LINESTYLE_BLACK // COLUNAS
   :nHeaderHeight       :=30 
   :nStretchCol         := STRETCHCOL_LAST 
   WITH OBJECT aCols[ 9 ]
      :nDataStrAlign    := AL_CENTER
      :nHeadStrAlign    := AL_CENTER
   END
END

ACTIVATE DIALOG oDlgPed
 

Now when you want to delete a record,
CALL

Code: Select all

oBrwPed:Delete()
 
No need to call Refresh() also.

Note: XBrowse automatically assigns the picture clause and also decides left/right aligns
Thank you Mr Nages