Clipper On Line • Ver Tópico - ListBox duplicando

ListBox duplicando

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

ListBox duplicando

Mensagempor gbetorodrigues » 03 Jan 2011 13:03

Quando exibo um LISTBOX com um set filter ele está duplicando o registro. Ex. Caso o resultado de um set filter seja apenas 1 registro ele coloca 3 linhas repetidas. Por que sera:

---------------------------------------------

FUNCTION MostFilt()

TIPOIMOV->(dbSetOrder(3)) // descricao
TIPOIMOV->(dbSeek(optpimovel))

aliaslaudo := TIPOIMOV->BASE

SET FILTER TO // LIMPANDO O FILTRO CORRENTE

otela1:update()
oLbx9:hide()

SELECT (aliaslaudo) // SELECIONANDO A AREA (BASE)

(aliaslaudo)->(dbGotop())

IF EMPTY(xcodLaudo)
SET FILTER TO (aliaslaudo)->BAIRRO == opBairro
ELSE
SET FILTER TO ALLTRIM( (aliaslaudo)->LAUDO ) == ALLTRIM(xcodLaudo)
ENDIF

(aliaslaudo)->(dbGoTop())

//oLbx9:UpsTable()
oLbx9:refresh()
oLbx9:Gotop()

otela1:update()
otela1:refresh()

oLbx9:SetFocus()

oLbx9:show()

RETURN .T.

----------------------------------------------------

Obrigado a TODOS que leram e FELIZ 2011 !!!
Nota de Moderação:
Maligno: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
gbetorodrigues
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 13
Data de registro: 08 Out 2010 09:51
Cidade/Estado: Rio de Janeiro / RJ
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: ListBox duplicando

Mensagempor rochinha » 04 Jan 2011 08:57

Amiguinho,

De mais uns dois comandinhos para o objeto ListBox:

objetoListbox:UpStable()
objetoListbox:Refresh()

Em minha aplicação como eu realizo filtragens de vários ListBoxes ao mesmo tempo, eu uso algumas funçõeszinhas para o auxilio.

O fato do SetFilter ser lento no meu caso eu optei por usar indices CDX e seus métodos de filtragem via Scope().

Se voce usa com NTX deverá passar a usar este RDD para melhorar a performace de seu aplicativo. SetFilter te fará sofrer.

Exemplo:

           dbSelectArea( "PENDENTE" )
           OrdSetFocus( 1 )
           QuickScope( str(M->IDCLIENTE,5,0) )
           dbSetfilter( nil, nil ); dbSetFilter( {|| PENDENTE->TIPO='C'}, "PENDENTE->TIPO='C'" )
           QuickRefresh( oLbxP4C )


Funções:
FUNCTION QuickScope(cLimInf,cLimSup)
  DEFAULT cLimInf := NIL
  DEFAULT cLimSup := cLimInf
  OrdScope(0,cLimInf)
  OrdScope(1,cLimSup)
  dbGotop()
  return .t.

FUNCTION QuickRefresh( oBject )
  oBject:UpStable()
  oBject:Refresh()
  dbGotop()
  return .t.


As funções são apenas para economizar na programação e deixar seu código mais legivel.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4209
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 499 vezes
Mens.Curtidas: 182 vezes

Re: ListBox duplicando

Mensagempor gbetorodrigues » 04 Jan 2011 09:31

Caro, Rochinha, já havia utilizado o upstable e mesmo assim nao funcionou. Quanto ao set filter, o listbox deverá apresentar, somente o que foi escolhido pelo usuário, para não confundi-los, o sistema também está dotado dos indices CDX. É utilizado um SET DELE ON antes fazer o filtro
gbetorodrigues
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 13
Data de registro: 08 Out 2010 09:51
Cidade/Estado: Rio de Janeiro / RJ
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro