Página 1 de 1

Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 09:45
por marcos.gurupi
Caros, eu alimentei uma array com o banco de dados e agora quero pegar o q o usuario escolheu e gravar no banco de dados. Como faco?

Aqui o usuario escolhe a marca:

Código: Selecionar todos

@ 219,34 GET COMBOBOX oMarca    VAR vMarca    ITEMS iMarca  ON INIT {||AlimentaMarca()} SIZE 110,23   
Estou alimentando a array assim:

Código: Selecionar todos

Static Function AlimentaMarca()

Local Areant:=Select()
Local aitems:={}
select 18
ordsetfocus(1)
ordscope(0,"P")
ordscope(1,"P")
dbgotop()
DO WHILE !EOF()
   aadd(aitems,Nome)
   DBSKIP()
ENDDO
oMarca:aitems:=aitems
//iMarca:={aItems}
ordscope(0,Nil)
ordscope(1,Nil)
Select(Areant)
RETURN .T.

Como faco para pegar o conteudo e gravar na tabela?

Marcos Roberto.

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 10:17
por alxsts
Olá!

Mas como identificar o item selecionado no combobox?

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 12:47
por esbasso
Jesus, é um objeto
Pegar o item selecionado é o minimo que este objeto teria de retornar
oMarca:value retorna o item selecionao indice numerico do array
oMarca:DisplayValue retorna o texto do indice do array

imarca retorna o item selecionado

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 14:59
por alxsts
Olá!

O motivo é simples: não conheço essa tecnologia e quero aprender.
esbasso escreveu:oMarca:value retorna o item selecionao indice numerico do array
oMarca:DisplayValue retorna o texto do indice do array
A resposta do colega Esbasso ficou clara para mim. Imagino que o array contenha as opções e, sendo um combobox, deveria haver um método de se conhecer a opção selecionada. Aliás, essa foi a pergunta do tópico.

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 21:54
por marcos.gurupi
Com o exemplo do Fernando estah retornando o seguinte erro:

Código: Selecionar todos

Error BASE/1004  Message not found: HCOMBOBOX:DISPLAYVALUE
Called from tobject.prg->HCOMBOBOX:ERROR(172)
Called from tobject.prg->HCOMBOBOX:MSGNOTFOUND(205)
Called from tobject.prg->HCOMBOBOX:DISPLAYVALUE(0)
Called from PNEUS.PRG->INCLUIR(226)
Eu quero gravar na tabela o que o usuario escolher no combobox.

Replace Marca with oMarca:DisplayValue

Tentei assim tb.

MsgInfo(oMarca:DisplayValue)


Marcos Roberto.

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 22:17
por sygecom
Olá Marcos,
O mais indicado é assim:

Seu combo:
@ 219,34 GET COMBOBOX oMarca VAR vMarca ITEMS iMarca ON INIT {||AlimentaMarca()} SIZE 110,23 TEXT;
DISPLAYCOUNT 27
TOOLTIP 'Selecione a Marca'

Para pegar o que está no Combo:
MsgInfo(vMarca)
ou
MsgInfo(thisform:oMarca:GetText()) // não tenho certeza
ou
MsgInfo(iMarca[oMarca])

Uma dessas acima deve dar, espero que seja isso que está procurando, o DISPLAYCOUNT serve apenas para você dizer na COMBOBOX de quantos item será visíveis de arrancada até criar a barra de rolagem.

Re: Pegar conteudo de um objeto com array.

Enviado: 16 Abr 2010 22:47
por marcos.gurupi
Observe a mensagem do Leonardo como eh explicativa. Eu tenho certeza que ele nao precisa disso mas faz...
obrigado Eric vc tem a humildade dos sabios. A proposito com o vMarca eu nao consegui o conteudo selecionado.

E vamos ao que interessa. Leonardo o exemplo abaixo deu certo.

MsgInfo(thisform:oMarca:GetText())

Obrigado.

Marcos Roberto.