Criando um grid com MarkBrow


MarkBrow A utilização do componente MarkBrow é bem simples, você o encontra em várias rotinas do sistema, como na rotina SPEDNFE ou no Documento de exclusão de saida de Nf, etc... A função MarkBrow() permite que os elementos de um browser sejam marcados ou desmarcados. Sintaxe: MarkBrow ( [ cAlias ] [ cCampo ] [ cCpo ] [ aCampos ] [ lInverte ] [ cMarca ] [ cCtrlM ] [ uPar8 ] [ cExpIni ] [ cExpFim ] [ cAval ] [ bParBloco ] [ cExprFilTop ] [ uPar14 ] [ aColors ] [ uPar16 ] ) Observações Para utilização da MarkBrow() é necessário declarar as variáveis cCadastro e aRotina () como Private acima da chamada da função. aRotina Vetor com as rotinas que serão executadas. Nele será definido o tipo de operação a ser executada (inclusão, alteração, exclusão, visualização, pesquisa, ...), sua estrutura é composta de 5 (cinco) dimensões: [n][1] - Título [n][2] - Rotina [n][3] - Reservado [n][4] - Operação (1 - pesquisa; 2 - visualização; 3 - inclusão; 4 - alteração; 5 - exclusão) [n][5] - Acesso relacionado à rotina. Se esta posição não for informada, nenhum acesso será validado. aCampos [n][1] - Nome do campo [n][2] - Nulo (Nil); [n][3] - Título do campo [n][4] - Máscara (picture).

User Function AFIN003 
	Local 	aPerg     	:= {} 
	Private cAlias 	  	:= "SE2"
	Private cCadastro 	:= "Contas a Pagar"
	Private aRotina 	:= {} 
	Private aTitulos	:= {}   
	Private aIndexQRY   := {}   
	Private aIndexSE2   := {}
	Private cExp		:= ""
	Private aFiltro 	:= {}   
	Private bFiltraBrw	:= {|| Nil }  
	Private _cQuery		:= ""      
	Private cText		:= ""    
	Private aCores		:= {}	
	Private aCampos		:= {}
	Private cArqTrab    := ""
	Private cFiltro		:= ""
	Private nOrdPesq := 1
	Private cCondicao 	:= ""
		
	CriaSx1a('AFIN003F')
	if !(Pergunte('AFIN003F',.T.))
		Alert("Cancelado pelo usuario!")
		return
	endif

	AADD(aRotina,{"Visualizar"				,"U_AFIN003V"			, 0,2})
	Aadd(aRotina,{"Aviso"					,"U_AFIN003A"			, 0,6})		
	                 
	dbSelectArea("SE2")
	

	cCondicao := "     	E2_PREFIXO	== 'EIC' "	
	cCondicao += " .AND. E2_NUMDI 		  >= '"+mv_par01		+"' .AND. E2_NUMDI 		  <= '"+mv_par02+"' " 
	cCondicao += " .AND. E2_NUM 	 	  >= '"+mv_par03		+"' .AND. E2_NUM   		  <= '"+mv_par04+"' "
	cCondicao += " .AND. E2_FORNECE 	  >= '"+mv_par05		+"' .AND. E2_FORNECE 	  <= '"+mv_par07+"' " 
	cCondicao += " .AND. E2_LOJA    	  >= '"+mv_par06		+"' .AND. E2_LOJA		  <= '"+mv_par08+"' "
	cCondicao += " .AND. DTOS(E2_EMISSAO) >= '"+Dtos(MV_PAR09)  +"'.And. DTOS(E2_EMISSAO) <= '"+Dtos(MV_PAR10)+"'"
	
	if mv_par12>0 
		cCondicao += " .AND. E2_VALOR >= '"+STR(mv_par11)+"' .AND. E2_VALOR   	<= '"+STR(mv_par12)+"' "
	endif 

	If !Empty(mv_par13)	
		cCondicao+= " .AND. E2_HIST $ '"+Alltrim(mv_par13)+"' " 
	endif
	
	If !Empty(mv_par15)	
		cCondicao+= " .AND. E2_HAWBEIC == '"+mv_par15+"' " 
	endif

	If !Empty(mv_par16)	
		cCondicao+= " .AND. E2_PO_EIC == '"+mv_par16+"' " 
	endif

	
	bFiltraBrw	:= {|| FilBrowse("SE2",@aIndexSE2,@cCondicao) }
 	Eval(bFiltraBrw)
	dbSelectArea("SE2")
	if mv_par14==1
		SE2->(dbSetOrder(5))
	Elseif mv_par14==2
		SE2->(dbSetOrder(17))
	Elseif mv_par14==1
		SE2->(dbSetOrder(1))
	Endif	
	SE2->(dbGoTop())

	SET FILTER TO &(cCondicao)

	Aadd(aCampos, {'E2_ZZMARCA'	,'C','Ok'		,1,0,'@!'})
	Aadd(aCampos, {'E2_NUMDI'	,'C','D.I'		,PesqPict("SE2","E2_NUMDI")		,TAMSX3("E2_NUMDI")[1]		,TAMSX3("E2_NUMDI")[2]})
	Aadd(aCampos, {'E2_PO_EIC'	,'C','P.O'		,PesqPict("SE2","E2_PO_EIC")	,TAMSX3("E2_PO_EIC")[1]		,TAMSX3("E2_PO_EIC")[2]})
	Aadd(aCampos, {'E2_HAWBEIC'	,'C','Hawb'		,PesqPict("SE2","E2_HAWBEIC")	,TAMSX3("E2_HAWBEIC")[1]	,TAMSX3("E2_HAWBEIC")[2]}) 
	Aadd(aCampos, {'E2_PREFIXO'	,'C','Prefixo'	,PesqPict("SE2","E2_PREFIXO")	,TAMSX3("E2_PREFIXO")[1],TAMSX3("E2_PREFIXO")[2]})
  	Aadd(aCampos, {'E2_NUM'		,'C','Titulo'	,PesqPict("SE2","E2_NUM")		,TAMSX3("E2_NUM")[1]		,TAMSX3("E2_NUM")[2]}  )
	Aadd(aCampos, {'E2_PARCELA'	,'C','Parcela'	,PesqPict("SE2","E2_PARCELA")	,TAMSX3("E2_PARCELA")[1]	,TAMSX3("E2_PARCELA")[2]}  )
	Aadd(aCampos, {'E2_TIPO'	,'C','Tipo'		,PesqPict("SE2","E2_TIPO")		,TAMSX3("E2_TIPO")[1]		,TAMSX3("E2_TIPO")[2]} )                           
	Aadd(aCampos, {'E2_NATUREZ'	,'C','Natureza'	,PesqPict("SE2","E2_NATUREZ")	,TAMSX3("E2_NATUREZ")[1]	,TAMSX3("E2_NATUREZ")[2]})
	Aadd(aCampos, {'E2_FORNECE'	,'C','Fornecedor',PesqPict("SE2","E2_FORNECE")	,TAMSX3("E2_FORNECE")[1]	,TAMSX3("E2_FORNECE")[2]})
	Aadd(aCampos, {'E2_LOJA'	,'C','Loja'		,PesqPict("SE2","E2_LOJA")		,TAMSX3("E2_LOJA")[1]		,TAMSX3("E2_LOJA")[2]} )
	Aadd(aCampos, {'E2_EMISSAO'	,'D','Emissao'	,PesqPict("SE2","E2_EMISSAO")	,TAMSX3("E2_EMISSAO")[1]	,TAMSX3("E2_EMISSAO")[2]})
	Aadd(aCampos, {'E2_VENCTO'	,'D','Vencimento',PesqPict("SE2","E2_VENCTO")	,TAMSX3("E2_VENCTO")[1]		,TAMSX3("E2_VENCTO")[2]})
	Aadd(aCampos, {'E2_VENCREA'	,'D','Venc.Real',PesqPict("SE2","E2_VENCREA")	,TAMSX3("E2_VENCREA")[1]	,TAMSX3("E2_VENCREA")[2]})
	Aadd(aCampos, {'E2_VALOR'	,'N','Valor'	,PesqPict("SE2","E2_VALOR")		,TAMSX3("E2_VALOR")[1]		,TAMSX3("E2_VALOR")[2]})
	Aadd(aCampos, {'E2_SALDO'	,'N','Saldo'	,PesqPict("SE2","E2_SALDO")		,TAMSX3("E2_SALDO")[1]		,TAMSX3("E2_SALDO")[2]})
	Aadd(aCampos, {'E2_HIST'	,'C','Historico',PesqPict("SE2","E2_HIST")		,TAMSX3("E2_HIST")[1]		,TAMSX3("E2_HIST")[2]})

	MarkBrow("SE2","E2_ZZMARCA","",aCampos,.F.,GetMark(,"SE2","E2_ZZMARCA"),,,,,,,,,)

	Set Filter to 
	SE2->(DbGotop())	

Return