Boa tarde!
Gostaria de saber se alguém possui algum exemplo do método AddFilter da classe FwMarkBrowse.
Preciso criar um filtro onde a propriedade lFilterAsk seja igual a .T., isso é, o usuário irá informar o conteúdo do filtro no momento da execução.
Como configurar quais campos da tabela serão informados para o usuário filtrar? No meu caso, serão dois campos de tabela temporária: TMP_COD e TMP_LOJA.
Agradeço pela ajuda.
Você diz aquele filtro padrão do protheus que tem no canto superior direito?
Camarada, demorei pra achar sua pergunta para descobrir que não foi respondida :'(.
Não teve jeito, tive que me virar nas gambiarra.
Não sei se funciona com FWMarkBrowse mas com a FWMbrowse funcionou direitinho.
Consegui este código tornando a variável do browse privada e pegando o array de filtros via depuração,
ou seja, basta você criar manualmente o filtro que quiser e depois utilizar sua função informada no método SetIniWindow para visualizar como foi salvo o filtro no padrão do protheus, e então copiar tudo para o seu código ;)
Obs: Estou utilizando em tabela temporária, e mesmo assim não tive problemas.
Private oBrowse
//Filtro de expressão exibido quando você cria seu filtro manualmente
oBrowse:AddFilter("Descricao Contem", '"%TMP_DESC0%" $ UPPER(TMP_DESC)',,.F.,,.T.)
//Bloco de código que é executado na inicialização da janela do browse
oBrowse:SetIniWindow({||UpdBrw()})
//Sua função para alterar o filtro do browse durante a execução
//Está feito na mão mas acredito que você pode facilitar a programação pela função FWFilter
Static Function UpdBrw()
Local aFiltroDes := { {"TMP_DESC","FIELD","DESCRICAO Contém a expressão '%TMP_DESC0%'",'"%TMP_DESC0%" $ UPPER(TMP_DESC)',"UPPER(TMP_DESC) LIKE '%%TMP_DESC0%%'"},;
{"..","OPERATOR","","",""},;
{"%TMP_DESC0%","EXPRESSION","","","",.F.};
}
IF oBrowse:OFWFILTER:AFILTER != nil .AND. Len(oBrowse:OFWFILTER:AFILTER) > 0 .AND. type("oBrowse:OFWFILTER:AFILTER[1][3]") == "C" .AND. EMPTY(oBrowse:OFWFILTER:AFILTER[1][3])
oBrowse:OFWFILTER:AFILTER[1][3]:= aFiltroDes[1][5]//"UPPER(TMP_DESC) LIKE '%%TMP_DESC0%%'"
oBrowse:OFWFILTER:AFILTER[1][4]:= aFiltroDes
ENDIF
Return .T.
Bom dia, Anderson! Na versão mais recente da Lib eu vi que ao MarkBrowse já possibilita a criação de filtros, anteriormente quando o mesmo era baseada em tabela temporária o botão não era habilitado. Usando essa Lib acabou que não tive mais que forçar a criação de filtros no browse. Mas obrigado pela ajuda. 