Página 1 de 2
Ler dados da dbf e imprimir na tela com minigui
Enviado: 04 Fev 2014 01:02
por Nascimento
Amigos boa noite estou tentando pegar uns dados de uma dbf e printar na tela com a minigui desta forma
Código: Selecionar todos
#include "minigui.ch"
function Mcenthos()
use aptos
aptos->(dbgotop())
define window Entrada ;
at 0,0 ;
width 900 ;
height 640 ;
title 'Entrada' ;
nosize;
main
col:=10
for i := 1 to 20
skip
col+=10
@10, col label i value apt
next
end window
entrada.center
entrada.activate
Return Nil
a dbf aptos é composta de numeros de 01 a 20
eu queria que ficasse mais ou menos assim na tela
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20
so que da erro no label e nao sei qual o comando pra fazer isso
Ler dados da dbf e imprimir na tela com minigui
Enviado: 04 Fev 2014 08:02
por Toledo
Josivan, tenta o seguinte:
Código: Selecionar todos
#include "minigui.ch"
function Main() //se a WINDOW vai ser MAIN, aqui também tem que ser Main()
SET DELETED ON //os registros marcados para deletar não serão contados, pois tem muitos
//registros deletados no seu arquivo APTOS.
use aptos
aptos->(dbgotop())
nTotReg:=LastRec() //total de registros no arquivo APTOS (sem os deletados)
define window entrada ;
at 0,0 ;
width 900 ;
height 640 ;
title 'Entrada' ;
nosize;
main
col:=10
lin:=10
for i := 1 to nTotReg
@ lin, col label &(strzero(i,2)) value alltrim(apt)
skip //coloquei o SKIP depois de LABEL, senão o 1º registro vai se perder
col+=20
if (i % 10)==0 //se já deu 10 registros
lin+=20 //muda a linha
col:=10 //e volta para coluna 10
endif
next
end window
entrada.center
entrada.activate
Return Nil
Abraços,
Ler dados da dbf e imprimir na tela com minigui
Enviado: 04 Fev 2014 11:10
por Nascimento
Mais uma Vez Mestre Toledo Muito obrigado a vc e a Todos que Mantem esse Forum :{
Ler dados da dbf e imprimir na tela com minigui
Enviado: 17 Fev 2014 16:41
por Nascimento
Amigos tou aqui novamente pra ver se tem soluçao esse problema
a funçao corrigida pelo amigo toledo ficou certissima so que eu descidi da uma mechida no codigo
com uns exemplos que vi do nosso amigo Giovanni Di Maria
ficou otimo
so que apareceu outro problema no qual ja bati e nao consegui solucionar :%
vou postar como ficou o cod e abaixo o cod
Código: Selecionar todos
# include 'minigui.ch'
Func Main()
local cButton,k
public vapt:={}
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
col:=10
lin:=10
for k := 1 TO nTotReg
cButton := strzero(k,2)
AAdd(vapt,cButton)
@ lin, col button &cButton ;
parent Form_1 ;
caption strzero(k,2) ;
action MsgInfo(' Você clicou no Botão ' +strzero(k,2));
width 20 ;
height 20
skip
col+=30
if (k % 10)==0 //se já deu 10 registros
lin+=30 //muda a linha
col:=10 //e volta para coluna 10
endif
next k
Form_1.Activate
return Nil
e abaixo a imagem do respectivo codigo o que acontece é que eu queria que desse a action certa mais so da o mesmo numero (no caso ai so fica no 21) em todos os buttons
porque se essa maneira funcionar cada button vai execultar uma funçao defenida
a dbf esta logo no começo deste respectivo topico anexada como aptos.rar
att: Josivan Nascimento
ja agradecendo a todos que puderem me ajudar
Ler dados da dbf e imprimir na tela com minigui
Enviado: 17 Fev 2014 17:25
por Toledo
Josivan, veja este exemplo:
Código: Selecionar todos
# include 'minigui.ch'
Func Main()
local cButton,k
public vapt:={}
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
col:=10
lin:=10
for k := 1 TO nTotReg
cButton := strzero(k,2)
AAdd(vapt,cButton)
@ lin, col button &cButton ;
parent Form_1 ;
caption strzero(k,2) ;
action {|| Clicou(this.Caption)};
width 20 ;
height 20
skip
col+=30
if (k % 10)==0 //se já deu 10 registros
lin+=30 //muda a linha
col:=10 //e volta para coluna 10
endif
next k
Form_1.Activate
return Nil
**********************************
Func Clicou(cCap)
MsgInfo("Você clicou no Botão "+cCap)
Return Nil
Abraços,
Ler dados da dbf e imprimir na tela com minigui
Enviado: 17 Fev 2014 17:32
por Nascimento
Muiiiiiiiiiito obrigado mestre toledo, e a todos os demais que fazem

)
esse forum é minha sala de aula , quase nunca saio dele rsrs
abraços a todos
att: josivan Nascimento
Ler dados da dbf e imprimir na tela com minigui
Enviado: 21 Mar 2014 03:35
por Nascimento
Amigos Volto aqui mais uma vez precisando da ajuda de todos voceis, estou portando um fonte para harbour/minigui
o Amigo toledo deu alguns ajustes ficando otimo mais agora preciso de pequenos detalhes segue a imagem abaixo:
o que preciso é que aparece na label so o numero tipo: 999, 02 , 03, etc
mais quando clicar no botal apareça como esta na tela levando as informaçoes do campo "SIT" 999LI ,02LI ...17LI
abaixo segue o codigo e o banco de dados atualizado
Código: Selecionar todos
# include 'minigui.ch'
Func Main()
local cButton,k
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
col:=50
lin:=20
for k := 1 TO nTotReg
cButton := ltrim(apt)
@ lin, col button &cButton ;
parent Form_1 ;
caption ltrim(apt)+' '+sit ; // AQUI SO APARECERIA NO CASO O NUMERO DO APT
action {|| Clicou(this.Caption)};
width 40 ;
height 20
skip
col+=50
if (k % 10)==0 //se já deu 10 registros
lin+=40 //muda a linha
col:=50 //e volta para coluna 10
endif
next k
Form_1.Activate
return Nil
**********************************
Func Clicou(cCap)
MsgInfo("Você clicou no Botão "+cCap) // AQUI SIM O NUMERO DO APT MAIS A SITUAÇAO DO MESMO
Return Nil
aqui segue o banco de dados atualizado
Agradeço a Todos que poderem me ajudar
Ler dados da dbf e imprimir na tela com minigui
Enviado: 21 Mar 2014 09:25
por Toledo
Amigo, faça o seguinte:
Incluir o comando abaixo uma linha antes do
use aptos:
Alterar o Caption do botão:
Incluir uma linha antes do comando
skip:
Incluir uma linha antes do comando
MsgInfo:
Alterar o conteúdo do comando
MsgInfo:
Abraços,
Ler dados da dbf e imprimir na tela com minigui
Enviado: 21 Mar 2014 10:36
por Nascimento
Muito Obrigado amigo Toledo! funcionou perfeitamente
agora vou continuar aqui o árduo processo de migraçao que seria quase impossivel se nao fosse por esse forum , quando concluir vou postar os prints do antes e depois
o antes e o depois Abraços a todos :{
Ler dados da dbf e imprimir na tela com minigui
Enviado: 30 Mar 2014 12:54
por Nascimento
Amigos peço ate desculpas pela Amolaçao mais é que realmente no inicio de migraçao do modo console pra o modo gráfico é muito complicado das os primeiros passos
o meu propósito agora é o seguinte gravar no banco de dados mudando o campo "SIT" se ele estiver "LI" ele ir pra "OC"
adicionei como exemplo essas linhas
Código: Selecionar todos
Func Clicou(cCap)
nAp:=ASCAN(aApto,{|e| e[1]==cCap})
if aApto[nAp,2] =="LI" .and. msgyesno('deseja mudar a situaçao?') = .t.
msginfo('Gravou No Campo' + cCap + ' "SIT" OC')
endif
MsgInfo("Você clicou no Botão "+cCap+" "+aApto[nAp,2]) // AQUI SIM O NUMERO DO APT MAIS A SITUAÇAO DO MESMO
Return Nil
Por Exemplo: eu clico no 03 a o Campo dele esta "LI" ao clicar em Sim o Campo "SIT" do 03 Atualiza pra "OC" ja Atualizando Na Tela Tabem
Ler dados da dbf e imprimir na tela com minigui
Enviado: 31 Mar 2014 08:28
por Toledo
Amigo, logo após gravar o campo SIT com OC, basta alterar o valor do segundo elemento da matriz:
Abraços,
Ler dados da dbf e imprimir na tela com minigui
Enviado: 31 Mar 2014 08:55
por Nascimento
nobre amigo toledo isso que nao tou conseguindo gravar na dbf , parece ate brincadeira mais eu nao tou conseguindo com a minigui fazer isso ai vou dando andamento no soft e virando noites tentando ter exito na gravaçao da dbf o que ainda nao aconteceu :%
Ler dados da dbf e imprimir na tela com minigui
Enviado: 31 Mar 2014 09:55
por Toledo
Josivan, abrir um arquivo DBF (USE), indexar o arquivo (INDEX), buscar um registro no arquivo (SEEK) e gravar um valor em um campo (REPLACE), são comandos básicos para qualquer programador Clipper/Harbour.
Mas tudo bem, vamos as modificações no seu código:
Logo após ao comando
use aptos, incluir:
Código: Selecionar todos
If !File("aptos1.ntx")
Index on strzero(val(apt),3) to aptos1
Endif
Set index to aptos1
Trocar o código:
Código: Selecionar todos
if aApto[nAp,2] =="LI" .and. msgyesno('deseja mudar a situaçao?') = .t.
msginfo('Gravou No Campo' + cCap + ' "SIT" OC')
endif
Por este:
Código: Selecionar todos
If aApto[nAp,2] =="LI"
If msgyesno('deseja mudar a situaçao?','Apto: '+cCap+' Sit: '+aApto[nAp,2])
Go Top
Seek StrZero(Val(cCap),3)
Replace sit with "OC"
aApto[nAp,2] := "OC"
Endif
Endif
Abraços,
Ler dados da dbf e imprimir na tela com minigui
Enviado: 01 Abr 2014 10:38
por Pablo César
Josivan Nascimento escreveu:nobre amigo toledo isso que nao tou conseguindo gravar na dbf , parece ate brincadeira mais eu nao tou conseguindo com a minigui fazer isso ai vou dando andamento no soft e virando noites tentando ter exito na gravaçao da dbf o que ainda nao aconteceu :%
Na minha opinião e acredito que de muitos outros colegas, quando temos uma dificuldade de acertar o nosso código, devemos disponibilizar o nosso código fonte primeiramente, mesmo com erros. E indicar qual é a linha onde não está funcionando a rotina.
Temos que ser mais objetivos nas nossas questões. Só assim poderemos prosseguir no aprendizado. Não esperar que seja feito tudo... afff paciência do Toledo e de todo mundo...
Ler dados da dbf e imprimir na tela com minigui
Enviado: 07 Abr 2014 01:58
por Nascimento
entao como o amigo pablo sugeriu estou postando exatamente o trecho do codigo em uso e pablo nos softs que eu trabalhava quando comecei a aprender nunca usei seek() , e nem replace
caso mais detalhes posso te explicar so da um toc que eu te mostro em que trabalhava ai vc vai entender por conta as perguntas aparentemente bobas, sem mais delongas vamos la se vc entender e poder me ajudar te agradeço nao pensse que é eu querendo me aproveitar disso ou daquilo é que realmente eu estou perdido mais que cego em tiroteio , e so estou conseguindo das pequenos passos com a ajuda do amigo toledo e deste forum, que eu agradeço de coraçao
Código: Selecionar todos
# include 'minigui.ch'
static v_cor
Func Main()
local cButton,k
public sit
Private aApto:={}
public _verde_1 := {094,255,094}
public _branco := {255,255,255}
public _preto := {000,000,000}
public _vermelho := {190,000,000}
public _amarelo := {255,255,128}
use aptos
If !File("aptos1.ntx")
Index on strzero(val(apt),3) to aptos1
Endif
Set index to aptos1
set delete on
* aptos->(dbgotop())
* nTotReg:=LastRec()
define window Form_1 ;
at 0,0;
width 1024;
height 768;
main;
on init janela();
backcolor {0,0,0}
end window
Form_1.Activate
*******************************************************************************
func janela()
*use aptos
*-set delete on
goto top
totap:= LastRec() - 1
lin := 10
for i= 1 to 10
col := 0
do while (!EOF())
if (col >488)
exit
endif
* NESTE PEQUENO EXEMPLO PODEREMOS JA ANEXAR AS CORES DE ACORDO COM A SITUAÇAO DA DBF ORIGINAL
do case
case sit =="LI"
v_cor:=_verde_1
case sit== "OC"
v_cor:=_vermelho
case sit == "CL" .or. sit =="AR"
v_cor:=_branco
case sit== "IT"
v_cor:=_preto
case sit== "EC"
v_cor:=_amarelo
otherwise
v_cor:=_amarelo
end case
cButton := ltrim(apt)
@ lin, col label &cButton ;
parent Form_1;
width 40;
height 20;
value ltrim(apt) ;
tooltip 'A Suite Esta '+cButton + sit;
border;
font 'verdana' size 8 bold;
action {|| clicou(this.caption)};
backcolor v_cor; // NAO ENTENDI POR QUE NAO ESTA MUDANDO A COR DA LABEL
centeralign
* msginfo(v_cor) // COLOQUEI PARA VER SE ESTA PASSANDO A COR PRA O BACKCOLOR
AADD(aApto,{ltrim(apt),sit})
skip
col += 50
end do
if (EOF())
exit
endif
lin += 40
next i
Return
return Nil
**********************************
Func Clicou(cCap)
nAp:=ASCAN(aApto,{|e| e[1]==cCap})
If aApto[nAp,2] =="LI"
If msgyesno('deseja mudar a situaçao?','Apto: '+cCap+' Sit: '+aApto[nAp,2])
Go Top
Seek StrZero(Val(cCap),3)
Replace sit with "OC"
aApto[nAp,2] := "OC"
Endif
Endif
ai vem as duvidas eu acho que as realmente finais o que eu pude adiantar usando os codigos clipper / harbour fiz sem dificuldades mais quando mistura com a minigui ai vem a minha dificuldade
1º assim que mudar a sit o backcolor mudar tambem mudando a cor dele
isso é tudo que preciso pra dar continuidade ao resto do codigo
a funçao clicou ela esta perfeita com ela consigo ir pra outras funçoes mais nao consigo mudar a cor do backcolor para que o operador indentifique a nova situaçao