Alimentando um combobox

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Alimentando um combobox

Mensagem por marcos.gurupi »

Alguem consegue ver o que tem de errado na rotina/funcao abaixo?

Código: Selecionar todos

Static Function AlimentaCombobox(Area,ordem,Var,Obj)

Local Areant:=Select()
Local aitems:={}
select(Area)
ordsetfocus(Ordem)
dbgotop()
DO WHILE !EOF()
   If Area=1
      aadd(aItems,NoMesa)
   Else
      aadd(aItems,Descricao)
   Endif   
   DBSKIP()
ENDDO
Obj:aItems:=aItems
Select(Areant)
RETURN iif(Area=1,iNoMesa,iHistorico)

Uso com sucesso em outro aplicativo, mas aqui o combobox estah ficando vazio.

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Alimentando um combobox

Mensagem por Pablo César »

Ao final da inclusão faltaria um refresh ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Alimentando um combobox

Mensagem por alxsts »

Olá!

O fragmento de código não dá uma visão ampla. Não sabemos que tipo de variáveis você usa. Se forem Private, ou se obj for passado por referência, a variável obj:aItens estará carregada. Senão, o retorno da função está esquisito. Retorna duas variáveis que não são tratadas na função.
[]´s
Alexandre Santos (AlxSts)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Alimentando um combobox

Mensagem por marcos.gurupi »

Fiz as alteracoes sugeridas mas ainda o combobox estah retornando vazio. Segue abaixo o codigo mais completo.

Código: Selecionar todos


Private  vNoMesa := 1, vGarcom := 1, vQtdPes := 1,iNoMesa:={},iGarcom:={}
Private  oNoMesa,oLabel1, oGarcom, oLabel2, oQtdPes, oLabel3, oAbrirMesa



   @  14,45 GET COMBOBOX oNoMesa VAR vNoMesa  ITEMS iNoMesa ON INIT {||AlimentaCombobox(1,1,iNoMesa,oNoMesa)} SIZE 110,23   
   @ 145,45 GET COMBOBOX oGarcom VAR vGarcom  ITEMS iGarcom SIZE 155,23   
   @ 320,45 GET UPDOWN   oQtdPes VAR vQtdPes RANGE -9999,9999  INCREMENT 1 SIZE 80,22 STYLE WS_BORDER+ES_RIGHT   

   @ 429,44 BUTTON oAbrirMesa CAPTION "Abrir Mesa" ON CLICK {||LancarConsumo()}  SIZE 136,24 STYLE WS_TABSTOP  
   ACTIVATE DIALOG oAberMesa 

RETURN oAberMesa:lresult


Static Function AlimentaCombobox(Area,ordem,var,Obj)

Local Areant:=Select()
Local aItems:={}
select(Area)
ordsetfocus(Ordem)
dbgotop()
DO WHILE !EOF()
   If Alltrim(Situacao)="FECHADA".OR.EMPTY(SITUACAO)
 		aadd(aItems,StrZero(NoMesa,2))
  	Endif	
   DBSKIP()
ENDDO
Obj:aItems:=aItems
Select(Areant)
RETURN aItems

Marcos Roberto.
Marcos Roberto
NetService Software
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Alimentando um combobox

Mensagem por marcos.gurupi »

Eu fiz assim:

Código: Selecionar todos

MsgInfo(Str(Len(aItems),2))
E o array estah com os valores carregados, entaum eles nao estaum aparecendo no combobox.

Marcos Roberto.
Marcos Roberto
NetService Software
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Alimentando um combobox

Mensagem por alxsts »

Marcos,

não é muito a minha praia mas, você não deveria carregar os itens na variável que guarda os itens do combo box (iNoMesa)?

Código: Selecionar todos

iNoMesa := aItems
[]´s
Alexandre Santos (AlxSts)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Alimentando um combobox

Mensagem por marcos.gurupi »

Eu jah tentei mas apresenta este erro:

Código: Selecionar todos

Warning BASE/1005  Message not found: HCOMBOBOX:_VAR
Called from source\rtl\tobject.prg->HCOMBOBOX:ERROR(0)
Called from source\rtl\tobject.prg->HCOMBOBOX:MSGNOTFOUND(0)
Called from source\rtl\tobject.prg->HCOMBOBOX:_VAR(0)
Called from C:\PROGS\PRINCIPAL\harbour\EspPaulista\POCKET2\AbrirMesa.prg->ALIMENTACOMBOBOX(45)
Called from C:\PROGS\PRINCIPAL\harbour\EspPaulista\POCKET2\AbrirMesa.prg->(b)ABRIRMESA(17)
Called from source\hcontrol.prg->HCONTROL:INIT(173)
Essa mesma rotina uso com sucesso com xhb 1.0.0 + hwgui 2.17

Agora estou usando o xhb 1.2.1 + hwgui 2.17 acho que pode ser algum bug do xhb

Marcos Roberto
Marcos Roberto
NetService Software
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Alimentando um combobox

Mensagem por marcos.gurupi »

Solucao foi dada pelo companheiro Fernando Athayde:

Código: Selecionar todos

obj:requery()
Somente isso!!

Marcos Roberto.
Marcos Roberto
NetService Software
Responder