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
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
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql
Ing. MSc. Luis Duque
http://www.accasoft.net