HBQT: Como gravar dados e recuperar dados de forms

Projeto Harbour QT - HbQt, HbXBP e HbIDE

Moderador: Moderadores

Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

HBQT: Como gravar dados e recuperar dados de forms

Mensagem por Vlademiro »

Pessoal, estou usando HBQT juntamente com o QT Design para criar formulários. Os resultados tem sido interessantes, apesar de bem básicos ainda. Porém estou com uma dúvida. Como fazer para recuperar atribuir valores a objetos de formulários usando a HBQT ?

Aqui mesmo no fórum aprendi como atribuir uma data a um objeto QDate.
Na tentativa e erro consegui "popular" um combobox com seus valores chave definidos por mim.
Seguem os exemplos para quem quiser :

24 // Data de hoje como padrão
25 oData_Mov := oWndForm:q_data_mov()
26 oData_Mov:setDate( QDate( YEAR(DATE()) , MONTH( DATE() ) , DAY( DATE() ) ) )
27
28 Agora preencho um combobox a partir de um array multidimensional chamado aLocalOrigem
36 FOR x := 1 TO LEN( aLocalOrigem[2] ) // Percorro o array que está em aLocalOrigem[2]
37 // Preencho o combo onde ID_LOCAL = 1 e DESCRICAO_LOCAL = 2
38 oIdLocalOrigem:addItem( aLocalOrigem[2][x][ ID_LOCAL ] , aLocalOrigem[2][x][ DESCRICAO_LOCAL ] )
39
40 NEXT
41
42
43 // Associar um evento ao botão de incluir
44 oBtnGrava := oWndForm:q_btnGrava()
45 oBtnGrava:Connect( " clicked() " , { || grava( cChave ) } )

A função grava (linha 45) pega os dados (que são variáveis estáticas) e separa para a gravação.
AQUI ESTÀ A DÚVIDA !!
Como pegar valores de objetos datas e combobox (e quem sabe de outros controles) e atribuir a variáveis do harbour ?

Eis algumas tentativas infrutíferas :

66 AADD( aParameters , oData_mov:toString( "yyyy-MM-dd" ) )
67 // Local de origem
68 AADD( aParameters , STR(oIdLocalOrigem:currentIndex()) )

Na linha 66 atribuo o valor da data para um array. Mas o valor não é retornado corretamente
Na linha 68 tento pegar o combobox selecionado mas não da certo tb.

Alguém tem algum exemplo para compartilhar ?

PS : Para quem quer iniciar no mundo do HBQT sugiro os sites :

http://www.vouch.info/harbour-qt/index.html (tem uma documentação fraquinha da HBQT mas ajuda bastante)

e a documentação gerada por Giovanni DI Maria no link abaixo :
http://www.elektrosoft.it/tutorials/hbqt/hbqt.asp


Agradeço a todos !
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

HBQT: Como gravar dados e recuperar dados de forms

Mensagem por Vlademiro »

Consegui resolver a do combobox. Não ficou da forma como eu esperava. Eu esperava que o combobox fosse tipo um select do html, onde você colocasse o valor exibido e a chave referente ao valor. Não consegui assim, acabei criando duas matrizes, uma com a chave e a outra com o valor. Daí eu pego o valor selecionado atravez do método currentIndex() + 1. Esse método me diz qual elemento foi selecionado, eu só tennho que somar 1 por causa do índice da matriz em C/C++ que começa com zero.

Carrego o combobox
38 oIdLocalOrigem_ := oWndForm:q_id_local_origem()
39 IF ( aLocalOrigem_[1] )
40 FOR x := 1 TO LEN( aLocalOrigem_[2] )
41
42 oIdLocalOrigem_:addItem( aLocalOrigem_[2][x][ DESCRICAO_LOCAL ] )
43
44 NEXT
45 ENDIF
46

Leio o valor selecionado
84 AADD( aParameters , VAL( aLocalOrigem_[2];
85 [oIdLocalOrigem_:currentIndex()+1];
86 [ID_LOCAL];
87 ) )

A matriz aLocalOrigem_ é uma matriz bidimensional onde o primeiro elemento é o código (ID_LOCAL) e o segundo é a descrição (DESCRICAO_LOCAL), definidos no início do programa.

15 #define ID_LOCAL 1
16 #define DESCRICAO_LOCAL 2


Vou tentar agora a da data.
Responder