Procurando entender.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

camiloto
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 07 Jul 2004 02:37

Procurando entender.

Mensagem por camiloto »

Amigos.

Ocorreu-me um problema q não compreendi e, quem sabe, alguém possa me explicar. Este usando xharbour com minigui. Em um prg de procedures, crie uma procedure geral onde é criado uma window. Em outro prg, coloquei uma procedure que cria labels e textbox´s e numa terceira procedure coloquei uma parte q atribui aos value´s dos textbox´s o conteudo de campos de um dbf. Qdo mando compilar, dá error E0030, erro de sintaxe na procedure q atribui os valores aos value´s. Se, porém, eu tiro essa procedure e coloco no mesmo prg onde define a window, é compilado e executado sem problemas. O problema é q eu preciso dessa procedure junto com o prg q define os label´s e textbox. Alguem tem alguma solução?

Obrigado pela atenção.

Adriano.
culik

Mensagem por culik »

Ola

Porque nao nao tenta alterar seu programa para usar hwgui.

la vc nao precisa usar alguma coisa como
janela.controle.value := "alguma"
em hwgui e diretamente
@ x,y say osay caption texto

vc tambem notou a volta que vc da para incluir um registro no dbf

com hwgui faco assim

Código: Selecionar todos

        Local lExc:=.F.
        Local Form_2
        Local Botao_salvar, Botao_Cancelar, Botao_Deletar
        Private T_Codigo   
        Private T_Nome     
        Private T_Endereco  
        Private T_Bairro    
        Private T_Cep       
        Private T_Cidade    
        Private T_Estado    
        Private T_Fone1     
        Private T_Fone2     
        Private T_Email     
        Private cCodigo   := ""
        Private cNome     := ""
        Private cEndereco := ""
        Private cBairro   := ""
        Private cCep      := ""
        Private cCidade   := ""
        Private cEstado   := ""
        Private cFone1    := ""
        Private cFone2    := ""
        Private cEmail    := ""
        
        lNovo := lNovo_Registro

	If ! lNovo 	   
           cCodigo:=oBrowse:msrec[oBrowse:tekzp,1]
	   Agenda->(DBSetOrder(1))
	   If ! Agenda->(DBSeek( cCodigo  ))
	      MsgSTOP("Registro "+cCodigo+" não localizado!!","Agenda")
              Return Nil
	   EndIf
           cNome        := AllTrim( Agenda->Nome)
	   cEndereco	:= AllTrim( Agenda->Endereco)
           cBairro      := AllTrim( Agenda->Bairro)
	   cCep		:= AllTrim( Agenda->Cep)
	   cCidade	:= AllTrim( Agenda->Cidade)
	   cEstado	:= AllTrim( Agenda->Estado)
           cFone1       := AllTrim( Agenda->Fone1)
           cFone2       := AllTrim( Agenda->Fone2)
           cEmail       := AllTrim( Agenda->EMail) 
	EndIf	

        INIT DIALOG Form_2   ;
                    AT 0,0                   ;
                    SIZE 490, 300 ;
                    TITLE "Agenda de Contatos - "+Iif( lNovo , "Novo Registro" , "Alterando Registro"); 
                    CLIPPER NOEXIT;
                    FONT oFonte
	
                     @ 10,10 SAY 'Código' COLOR BLUE SIZE 140, 30

                     @ 10,40 SAY  'Nome' COLOR BLUE SIZE 140, 30

                     @ 10,70 SAY 'Endereço'  COLOR BLUE SIZE 140, 30
 
                     @10,100 SAY "Bairro" COLOR BLUE SIZE 140, 30
   
                     @360,100 SAY "Cep" COLOR BLUE SIZE 140, 30
 
                     @10,130  SAY "Cidade" COLOR BLUE SIZE 140, 30
 
                     @345,130 SAY "Estado"  COLOR BLUE SIZE 140, 30
 
                     @10,160 SAY "Fone 1"  COLOR BLUE SIZE 140, 30
 
                     @346,160 SAY "Fone 2" COLOR BLUE SIZE 140, 30

                     @10,190 SAY "E-Mail"  COLOR BLUE SIZE 140, 30
 
                     @70, 13 GET T_Codigo VAR cCodigo STYLE WS_DISABLED SIZE 40, 24

                     @70, 43 GET T_Nome VAR cNome picture Replicate("X",40)  VALID {||Valid_cNome()} SIZE 400, 24     
  
                     @70, 73 GET T_Endereco VAR cEndereco  picture Replicate("X",40) SIZE 400,24
  
                     @70,103 GET T_Bairro VAR cBairro picture Replicate("X",25)  SIZE 250, 24 
 
                     @390,103 GET T_Cep VAR cCep PICTURE "@R 99999-999" SIZE 80, 24

                     @70,133  GET T_Cidade VAR cCidade picture Replicate("X",25)  SIZE 250, 24 

                     @390,133 GET T_Estado VAR cEstado picture Replicate("X",2)  SIZE 30, 24
 
                     @70, 163 GET  T_Fone1 VAR cFone1 picture Replicate("X",10)  SIZE 110, 24
                      
                     @390,163 GET T_Fone2 VAR cFone2  picture Replicate("X",10) SIZE 80, 24
 
                     @70,193 GET T_Email VAR cEmail picture Replicate("X",40)  SIZE 400, 24


                      @ 70, 232 OWNERBUTTON Botao_Salvar  ;
                               TEXT 'Salvar' OF Form_2     ;
                               ON CLICK {||Salvar_Registro(),Sair_Form_2()}      ;
                               SIZE 120, 27      

                      @ 210,232 OWNERBUTTON  Botao_Deletar ;
                                TEXT 'Deletar' OF Form_2;
                                ON CLICK {||Excluir_Registro()}    ;
                                SIZE 120, 27         

                      @ 346,232 OWNERBUTTON Botao_Cancelar;
                                TEXT 'Cancelar' OF Form_2 ;
                                ON CLICK {||EndDialog()};       
                                SIZE 120, 27         

        ACTIVATE DIALOG Form_2

return nil 
e no botao de salvar tenho

Código: Selecionar todos

Function Salvar_Registro()
	Local ProximoCodigo := ""
	Local cCodigo	    := ""

        If Empty( cNome )
	  MsgINFO( "Nome não foi Informado!!" , "Agenda" )
          T_Nome:SetFocus()
          Return Nil
	EndIf


        If lNovo          
	   Agenda->(DBSetOrder(1))
	   Agenda->(DBGoBottom())
	   ProximoCodigo := StrZero(  Val( Agenda->Codigo ) + 1 , 4 )
	   Agenda->(DBAppend())
	   Agenda->Codigo := ProximoCodigo	  
           Agenda->Nome := cNome 
           Agenda->Endereco := cEndereco
           Agenda->Bairro := cBairro
           Agenda->Cep  := cCep 
           Agenda->Cidade       := cCidade 
           Agenda->Estado       := cEstado 
           Agenda->Fone1        := cFone1 
           Agenda->Fone2        := cFone2 
           Agenda->EMail        := cEmail
           lNovo:=.F.
	Else
           cCodigo := cCodigo
	   Agenda->(DBSetOrder(1))
	   If ! Agenda->(DBSeek( cCodigo  ))
	      MsgSTOP("Registro "+cCodigo+" não localizado!!","Agenda")
	   EndIf
	   If BloqueiaRegistroNaRede( "Agenda" )
              Agenda->Nome      := cNome
              Agenda->Endereco  := cEndereco
              Agenda->Bairro    := cBairro
              Agenda->Cep       := cCep 
              Agenda->Cidade    := cCidade 
              Agenda->Estado    := cEstado 
              Agenda->Fone1     := cFone1 
              Agenda->Fone2     := cFone2 
              Agenda->EMail     := cEmail 
	      Agenda->(DBUnlock())
	   EndIf	
        EndIf 

	MsgInfo( "Registo "+Iif( lNovo , "Incluído" ,"Alterado!!" )  )

        Pesquisa_Agenda(alltrim(cnome,1,1))

	Return Nil
Agora me diz uma coisa, vc esta vendo nesse codigo algum replace campo with form_2.contole.value ?


[]s
Luiz
Editado pela última vez por Pablo César em 10 Mai 2012 22:44, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

A postagem do colega foi sobre Minigui.

Use a Minigui ela é mais fácil e tem muito mais suporte.
Mas se preferir use o Foxpro que também é muito bom.
Ainda pode usar o VB ou quem sabe o Delphi.
Eu pessoalmente recomendo não fazer nada, deixa em Clipper puro mesmo e o cliente que quer 32 bits que se dane.

Pronto já dei minha "enorme" contribuição na questão do colega.

Tenho certeza que foi totalmente esclarecedora minha postagem assim como "outras".

Se é pra zoar vamos zoar....

:* :xau

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

MiniGUI, HwGUI

Mensagem por gransoft »

ARAGUARI-MG, 20 de outubro de 2005.

Prezados Srs.,

Não trata-se de "zoar"...

O Culik acabou de postar boas dicas de xHarbour em GNU/Linux em um POST aqui do Fórum.

Temos sim, que conseguir boas contribuições aqui mesmo ... o preço é a divulgação/convites que ele faz para outro Fórum e que a HwGUI é melhor, etc e tal...

Paciência... Isso é lá com os Moderadores.

Mas ele já percebeu que conquistará bons correligionários, e até editou um POST onde havia citado que aqui é OFF-TOPIC...

Não é OFF não !!! Tanto que ele e o Sandro passam por aqui periodicamente.

É ON para xHarbour.org, .com, com MiniGUI e/ou HwGUI.

O tal simples exemplo, com MiniGUI, no link abaixo, já recebeu 70 downloads só este mês:
http://www.gransoft.com/download/minigui/projeto.zip

Em breve, divulgo um exemplo funcional com a HwGUI...

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

É zoar sim !

Exemplo :

"Gostaria de saber qual o comando para limpar a tela toda com a Minigui"

Aí vem uma resposta do tipo "Não limpe a tela com a Minigui, limpar a tela com a hWgui é muito mais fácil, bonito, lindo e maravilhoso, além do mais você pode optar por usar a versão open source ou comercial, para saber mais visite www.pqp.vtf.com.br"

Porra !!!! Será que não dá pra responder diretamente independente de gosto pessoal ? Se o cara postou sobre a minigui é porque ele quer usar a minigui e quer uma resposta o mais rápido possível, agora se o cara postar "Qual IDE devo usar BRGUI, Minigui, Hwgui, Seiláoquegui ? Quais a vantagens e desvantagens entre elas ?"

Aí tudo bem o cara pode até escrever um livro do tipo "Como me apaixonei pela seiláoquegui".

Fórum foi feito primeiramente para tirar dúvidas e não colocar mais.

Fui...

:* :xau
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Sandro R R Freire
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 23 Set 2004 08:06

Mensagem por Sandro R R Freire »

Limpar a tela com Minigui ( CLS ) :-O

Cara, uma coisa que eu e o Culik falamos é
Você usam o que quizerem por suas conta e risco.
Apenas achamos que se você sobrepor uma variavel publica os efeitos serão muito desastrosos.
Um dia a muito tempo atrás, antes até de todos mecherem com Minigui, acho que era Luiz Vasquez, escreveu classes para Minigui, e sabe o que aconteceu, o Roberto Lopez, jogou-as no lixo.
Tempos depois o Ron Pinkas convidou o Roberto, inclusive se comprometeu a ajudar-lo, pois a idéia da Minigui é ótima sim, mas a sua escrita, é errada, e o Roberto, negou o auxilio.
Não existe muita segurança em variaveis publicas manuseadas como se fossem objetos, ou esse tal de pseudo objetos.
A Minigui tem muitos exemplos sim, bem como muitos componentes criados, mas ela em minha opnião é como cristal, tem que ter cuidado.
Amigos, tenho graças a Deus 15 anos de programação, sou um dos desenvolvedores da HwGUI e da xHGTK (outra GUI tb, mas que se baseia na GTK), não quero que ninguem use a HwGUI, a menos que queira, apenas expresso minha opnião sobre ela, o Luiz é mais radical, por que ele gostaria de ver outros não terem problemas pensando como ele, eu já acho que se alguem quer se afogar, é problema da pessoa.
Não faço parte do xHarbour comercial, faço parte dos projetos Open Source.
Trabalho em uma empresa como programador de um ERP
Por favor, leiam os códigos, analisem e tirem suas opniões.
Façam como quizerem, sigam o caminho que quizerem, mas não me obriguem a aceitar a dizer que Minigui por exemplo é maravilhosa, pois em minha opnião não é, apenas tem mais componentes que HwGUI em Windows, e diga-se que isso é proposital, pois tais componentes não existem para GTK, o que tornaria inviável sua versão para Linux, e no futuro até para Solaris, essa é nossa idéia.
camiloto
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 07 Jul 2004 02:37

Mensagem por camiloto »

Putz, e eu q so queria entender um problema....

Quero aqui expressar minha indignação com tudo isso. Gente, EU SÓ QUERIA ENTENDER O PROBLEMA QUE ME OCORREU e não entrar nessa discussão que, desculpem-me, é totalmente inutil. Eu uso a minigui, não conheço a hwgui, mas isso não interessa. Será q alguém pode, pelo amor de Deus, simplesmente responder a minha dúvida??? Se toda vez q eu tiver uma duvida for essa confusão, me desculpem, mas vou procurar em outros foruns.

E ai, alguem sabe o por que do problema???
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

MiniGUI, IDE

Mensagem por gransoft »

ARAGUARI-MG, 20 de outubro de 2005.

Prezado Adriano,

Sempre poste um pequeno algorítmo para exemplificar. Ajuda muito nas respostas.

Também tive erros semelhantes, referentes à visibilidade dos objetos.
Por isso, padronizei um *.PRG para FUNÇÕES, um *.FMG para controle de arquivos (BROWSE) e outro *.FMG para LAYOUT de Formulários.

Sobre GRID's (outro post), não uso... Definir controles de teclas se dispomos de BROWSE em arquivos temporários ?

Se desejar um simples exemplo, demonstrando como faço atribuições de valores aos TEXTBOX, acesse o link abaixo:
http://www.gransoft.com/download/minigui/projeto.zip

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Re: Procurando entender.

Mensagem por Antonio »

camiloto escreveu:Amigos.

Ocorreu-me um problema q não compreendi e, quem sabe, alguém possa me explicar. Este usando xharbour com minigui. Em um prg de procedures, crie uma procedure geral onde é criado uma window. Em outro prg, coloquei uma procedure que cria labels e textbox´s e numa terceira procedure coloquei uma parte q atribui aos value´s dos textbox´s o conteudo de campos de um dbf. Qdo mando compilar, dá error E0030, erro de sintaxe na procedure q atribui os valores aos value´s. Se, porém, eu tiro essa procedure e coloco no mesmo prg onde define a window, é compilado e executado sem problemas. O problema é q eu preciso dessa procedure junto com o prg q define os label´s e textbox. Alguem tem alguma solução?

Obrigado pela atenção.

Adriano.


No PRG onde esta sendo criada a Janela inclua os demais PRGS:


#include "prog1.prg"
#include "prog2.prg"
#include "prog3.prg"

Veja se resolve.
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Eu não sou contra a hwgui (até achoe ela mais fácil que a minigui) minha "briga" aqui é para que não se postem mensagens que ao invés de ajudar atrapalhem o membro que está com dúvida, imaginemos o seguinte :

Eu entro no News da Xharbour e pergunto sobre algumas dúvidas sobre a hwgui e alguém me responde que devo usar a minigui e me posta um código como exemplo, minha vontade é de mandar o cara ITNC, se eu perguntei sobre a hwgui é porque estou usando ela "provavelmente estou satisfeito, senão já teria mudado" e quero uma resposta rápida para a hwgui, não irá me importar se a minigui é melhor, se o delphi e a melhor linguagem do mundo, se o cobol não presta, se o Zé Dirceu vai ser cassado, eu quero a resposta para minha questão e só. Se ainda sim a pessoa na sua opnião quiser indicar uma solução então faz como eu faço.

Exemplo :

Pergunta :

"Como usar a função DBEDIT() ?"

Minha resposta seria :

A função DBEDIT() está obsoleta, melhor seria usar a classe TBROWSE.
Segue abaixo um código de como usar a DBEDIT().
...
...
...
...
...
DBEDIT(04,05,18,74,CAMPOS,"FUNCNOTA",WPICTU,WCABEC,"-","|","-")
...
...
...
Pronto resolvi o problema do colega e ao mesmo tempo dei a dica de uma opção melhor, fica a critério dele escolher o que fazer.

Entenderam agora porque faço essas criticas ? Irei continuar fazendo-as até que se pare com isso ou até que o Toledo me solicite tal.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
camiloto
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 07 Jul 2004 02:37

Mensagem por camiloto »

Amigos, problema resolvi, porém não entendido. A sugestão do Antonio eu já havia feito, porém continuava dando erro. O q eu fiz foi aglutinar dois prg´s de funções em um e recompilar. Funcionou. Acreditem, não fiz alteração nenhuma no código, so move as linhas de um prg para outro. Bom, o q importa é q deu certo.
Obrigado.
Adriano Camiloto.
Responder