FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse con lFastEdit el Valid lo ejecuta dos veces
Posts: 133
Joined: Mon May 12, 2008 04:13 PM
xBrowse con lFastEdit el Valid lo ejecuta dos veces
Posted: Thu Jan 29, 2009 04:36 PM
Este es un ejemplo practico de que el valid lo hace Doble
coloque en comentario para hacerlo con Define dialog o con Define Window

lo puede compilar, estoy trabajando con la ultima version de FiveWin for Harbour

Lo dejo inicialmente con Define Dialog para que se den cuenta que el valid lo hace Doble

#include 'fivewin.ch'
#include 'xbrowse.ch'

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oBrw, oFont,aDbf := {}

   Aadd(aDbf,{"CODART","C",22,0})
   Aadd(aDbf,{"DESART","C",60,0})
   Aadd(aDbf,{"CANCOM","N",10,2})
   DbCreate("customer",aDbf)
   USE customer NEW ALIAS CUST
	cAlias := Alias()
	DbAppend()
	DbAppend()
	DbAppend()

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12

   DEFINE DIALOG oDlg SIZE 600,300 PIXEL TITLE "ERROR VALID EN XBrowse" FONT oFont
   //DEFINE WINDOW oDlg //TITLE "ERROR VALID EN XBrowse" FONT oFont
  
  	     oBrw := TXBrowse():New( oDlg ) 
        oBrw:cAlias := cAlias
		  
		  oBrw:lHScroll := .f.
 		  
        oBrw:nTop     := 0
        oBrw:nLeft    := 0
        oBrw:nBottom  := 150
        oBrw:nRight   := 250
                
        oBrw:nColDividerStyle    := LINESTYLE_BLACK
        oBrw:nRowDividerStyle    := LINESTYLE_BLACK
		  oBrw:lColDividerComplete := .t. //completa pintado sobre el footer cuando lineas no llenan todo el browse

        oBrw:nDataLines          := 1
		  oBrw:nRowSel             := 1
		  oBrw:nRowHeight          := 20 //altura entre lineas
		  oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLCELL //solo ilumina la celda actual
	     oBrw:bClrSelFocus        := {||{CLR_WHITE,RGB(176,196,222 )}}

		  oBrw:nHeaderHeight       := 30 //Altura cabeceras de col
        oBrw:nHeaderLines        := 2

		  oBrw:lFooter             := .t. //Que tendrá footer
		  oBrw:nFooterLines        := 1 //Lineas del footer
		  oBrw:nFooterHeight       := 24 //Altura del Footer
		  oBrw:lRecordSelector     := .t. //poner o no, COL de la flechita de la izq

        oBrw:nFreeze := 5

		  oBrw:bClrHeader          := {|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
		  oBrw:bClrFooter          := oBrw:bClrHeader
		  oBrw:bClrStd             := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
		  oBrw:bClrSel             := {|| { nRGB(255,255,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco

		  oBrw:lFastEdit     := .t.

        	   oBrw:AddCol():bEditValue      := { || CODART }   //&("{ ||" + aCamposBrw[1] +"}")
            oBrw:aCols[ 1 ]:cHeader       := "Código del" + CRLF +"Artículo"
		      oBrw:aCols[ 1 ]:bClrHeader    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      oBrw:aCols[ 1 ]:bClrStd       := { || { CLR_BLACK,CLR_WHITE } } 
		      oBrw:aCols[ 1 ]:bClrFooter    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      oBrw:aCols[ 1 ]:nWidth        := 138
  			   oBrw:aCols[ 1 ]:nEditType     := EDIT_GET 
    			oBrw:aCols[ 1 ]:bEditValid    := {|oGet,oBrwCol| FunEValid(oGet,oBrwCol) }
     			oBrw:aCols[ 1 ]:bOnPostEdit   := {|oBrwCol, uVal, nKey| FunEPost(oBrwCol, uVal, nKey) } 

        	   oBrw:AddCol():bEditValue      := { || DESART }   //&("{ ||" + aCamposBrw[1] +"}")
            oBrw:aCols[ 2 ]:cHeader       := "Descripción del" + CRLF +"Artículo"
		      oBrw:aCols[ 2 ]:bClrHeader    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      //oBrw:aCols[ 2 ]:oDataFont     := oFontD
		      oBrw:aCols[ 2 ]:bClrStd       := { || { CLR_BLACK,CLR_WHITE } } 
		      oBrw:aCols[ 2 ]:bClrFooter    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      oBrw:aCols[ 2 ]:nWidth        := 270
  			   oBrw:aCols[ 2 ]:nEditType     := EDIT_GET
     			oBrw:aCols[ 2 ]:bEditValid    := {|oGet,oBrwCol|        FunEValid(oGet,oBrwCol) } 
     			oBrw:aCols[ 2 ]:bOnPostEdit   := {|oBrwCol, uVal, nKey| FunEPost(oBrwCol, uVal, nKey) } 

        	   oBrw:AddCol():bEditValue      := { || CANCOM }   //&("{ ||" + aCamposBrw[1] +"}")
            oBrw:aCols[ 3 ]:cHeader       := "Cantidad" + CRLF +"Artículos"
		      oBrw:aCols[ 3 ]:bClrHeader    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      //oBrw:aCols[ 3 ]:oDataFont     := oFontD
		      oBrw:aCols[ 3 ]:bClrStd       := { || { CLR_BLACK,CLR_WHITE } } 
		      oBrw:aCols[ 3 ]:bClrFooter    := { || { CLR_RED,RGB(176,196,222 ) } } 
		      oBrw:aCols[ 3 ]:nWidth        := 50
  			   oBrw:aCols[ 3 ]:nEditType     := EDIT_GET 
     			oBrw:aCols[ 3 ]:bEditValid    := {|oGet,oBrwCol|        FunEValid(oGet,oBrwCol) } 
     			oBrw:aCols[ 3 ]:bOnPostEdit   := {|oBrwCol, uVal, nKey| FunEPost(oBrwCol, uVal, nKey) } 

   oBrw:SetRDD() 
   oBrw:CreateFromCode()


   ACTIVATE DIALOG oDlg CENTERED
  //ACTIVATE WINDOW oDlg
   RELEASE FONT oFont

return nil
//
Function FunEPost(oBrwCol, uVal, nKey)
   Local cVal,nReg
	Return(.t.) 
//
Function FunEValid(oGet,oBrwCol,oBrw,aCamposGet)
   MSGINFO("LO REPITE DOBLE")
   Return(.t.)
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: xBrowse con lFastEdit el Valid lo ejecuta dos veces
Posted: Fri Jan 30, 2009 09:49 PM

Luis...

Ciertamente evalua el valid 2 veces usando dialog, pero solo lo hace cuando el valid retorna TRUE, cuando retorna FALSE no hay complicacion alguna.

que dificultad te genera que evalue el valid 2 veces ?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: xBrowse con lFastEdit el Valid lo ejecuta dos veces
Posted: Fri Jan 30, 2009 10:02 PM
Luis,

Como una solucion temporal puedes hacer:
Function FunEValid(oGet,oBrwCol,oBrw,aCamposGet)

   static nVeces := 1

   if nVeces == 1
      MsgInfo( "valid" ) // accion a ejecutar del VALID
      nVeces++
   else
      nVeces = 1
   endif

Return .T.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 133
Joined: Mon May 12, 2008 04:13 PM
Re: xBrowse con lFastEdit el Valid lo ejecuta dos veces
Posted: Sun Feb 01, 2009 12:13 AM

Gracias por la respuesta Maestro

Con esto logre solucionarlo

Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net

Continue the discussion