FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Para el maestro Antonio sobre xBrowse error con valid
Posts: 133
Joined: Mon May 12, 2008 04:13 PM
Para el maestro Antonio sobre xBrowse error con valid
Posted: Thu Jan 29, 2009 04:13 AM
El problema es el siguiente Cuando utilizo lfastedit y a la colomna le coloco
oBrw:aCols[ 1 ]:bEditValid := {|oGet,oBrwCol| FunValidar(oDlg,oBrw) } el me
ejecuta correcto cuando utilizo DEFINE WINDOW
pero cuando utilizo DEFINE DIALOG me ejecuta dos veces el valid

   DEFINE WINDOW oChild TITLE "Basic Cell selector browse" MDICHILD OF oWnd

   @ 0,0 XBROWSE oBrw OF oWnd ALIAS Alias()

oBrw:aCols[ 1 ]:bEditValid    := {|oGet,oBrwCol| FunValidar(oDlg,oBrw) }

   oBrw:CreateFromCode()
   oBrw:cToolTip = "This is a test"
   oChild:oClient := oBrw

   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

Lo hace correcto el valid

pero si lo hago asi
DEFINE DIALOG oDlg Size 800,600 

   @ 0,0 XBROWSE oBrw OF oWnd ALIAS Alias()

oBrw:aCols[ 1 ]:bEditValid    := {|oGet,oBrwCol| FunValidar(oDlg,oBrw) }

   oBrw:CreateFromCode()
   oBrw:cToolTip = "This is a test"
   oChild:oClient := oBrw

   ACTIVATE DIALOG


EL VALID lo hace dos veces

de antemano Gracias
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: Para el maestro Antonio sobre xBrowse error con valid
Posted: Thu Jan 29, 2009 06:04 AM
Luis...

En el 1er caso...
tienes una window MDICHILD (oChild) que pertenece a una MDI (oWnd)
el browse lo declaras "perteneciendo" a la MDI (oWnd) en vez de la MDICHILD

el comando deberia ser asi
@ 0,0 XBROWSE oBrw OF oChild ALIAS Alias()

En el segundo caso lo tienes igual...
si el dialogo pertenece a un window colocale el "OF"
y el browse quitale el oWnd y colocale el oDlg

pruebalo asi y comentas
Posts: 133
Joined: Mon May 12, 2008 04:13 PM
Re: Para el maestro Antonio sobre xBrowse error con valid
Posted: Thu Jan 29, 2009 04:33 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

Continue the discussion