Página 1 de 1

Como usar displayitems no browse ?

Enviado: 04 Set 2015 23:57
por rubens
Boa noite...

Estou implementando a rotina de contas a receber e preciso entrar na tela de consultas sem nenhum registro no browse.
Só depois de filtrado o cliente ou a data é que deve aparecer os registros no browse.
A Propriedade que achei que fosse seria a displayitems.
Só que eu setando ela para .T. ou .F. não faz diferença nenhuma.
Seria essa propriedade mesmo para não exibir os itens no browse ou teria outra ou não tem como fazer isso.

Tentei usar dessa forma

Código: Selecionar todos

SETPROPERTY('CTRECEB','BROWSE_1','DISPLAYITEMS',.F.)
Estou conseguindo fazer escondendo ou mostrando o browse. Então quando entra no form eu escondo o browse e quando pesquiso eu mostro o browse.
Mas fica meio estrando porque some o browse completamente. Gostaria que só exibisse os itens quando encontrado algo na pesquisa.
Obrigado

Rubens

Como usar displayitems no browse ?

Enviado: 05 Set 2015 09:02
por Toledo
Amigo, a utilização do DISPLAYITEMS tem outra finalidade, não é para exibir ou ocultar os registros do Browse.
rubens escreveu:Só depois de filtrado o cliente ou a data é que deve aparecer os registros no browse.
Você não disse como está fazendo este filtro dos registros, mas uma saída seria fazer um filtro inicial cuja condição retorne FALSO (.F.) para todos os campos usados no filtro. Por exemplo, fazer o filtro pelo código do cliente que não existe no cadastro (codigo=99999 ou codigo=0000).

Sobre o uso do DISPLAYITEMS, veja:
MiniGui Extended:
\SAMPLES\BASIC\Browse_4\browse.prg
\SAMPLES\BASIC\BROWSE_5\demo2.prg
\SAMPLES\BASIC\BROWSE_5\demo3.prg

HMG Oficial:
Não tem nenhum exemplo

Abraços,

Como usar displayitems no browse ?

Enviado: 05 Set 2015 11:24
por ANDRIL
Uma dica, já que não conheço os comandos da MiniGui. Voce pode fazer 2 browses, um fictício e um verdadeiro. O verdadeiro inicia-se "escondido", o "fictício" sendo exibido. No fictício voce cria atraves de um array vazio (se permitir) ou crie um DBF temporario com apenas um campo apenas para estabelecer o browse. Quando fizer a pesquisa voce inverte, esconde o fictício e mostra o verdadeiro.

A dica do Toledo é boa, porem não sabemos o tamanho da base de dados, o que pode tornar um filtro que retorne tudo .F. "demorado", não sei qual método de filtragem esta usando, mais com aumento da base, pode-se tornar um problema apenas para exibir o browse vazio.

Boa sorte!

Como usar displayitems no browse ?

Enviado: 05 Set 2015 15:46
por rubens
Obrigado Toledo e Andril..

Eu também tinha pensando em filtrar por um campo provavelmente não tivesse nenhum resultado.
Daí coloquei

Código: Selecionar todos

	DbSelectArea('CR')
	DbSetOrder(3)  // codigo do cliente
	OrdScope(0,'000001')
	OrdScope(1,'000001')
	DbGoTop()
E por um erro meu o cliente 000001 tinha 01 duplicata e não era para ter (venda a vista), depois que voce postou testei com o cliente 00000 e funcionou belezinha o browse fica despovoado.
Andril realmente quando a base for muito grande deve dar alguma inconsistência ou não com o ordscope(). Mas nesse caso especifico é contas a receber... Tomara que o cliente nao tenha nem 5000 títulos né.. heheheh

De qualquer forma obrigado,

Rubens