Clipper On Line • Ver Tópico - Multiplas chamadas de um mesmo fomulário

Multiplas chamadas de um mesmo fomulário

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Multiplas chamadas de um mesmo fomulário

Mensagempor Cavalo Marinho » 18 Nov 2013 08:12

Bom dia pessoal, sou programador em Clipper a mais de 20 anos e agora estou necessitando e disposto a mudar para harbour, então resolvi começar fazendo alguns testes para saber qual e nível de dificuldades que irei enfrentar para converter tudo que tenho. Já no primeiro instante me deparei com um problema que peço a ajuda dos srs. Estou utilizando hmg 3.1.5 de Roberto Lopez.
Em Clipper eu tenho uma função genérica de consulta que passando parâmetros como: tabela, títulos, nomes de campos, teclas de atalho etc eu monto um grid de consulta para qualquer tabela passada, e a executo varias chamadas ao mesmo tempo conforme necessidade. Exemplo.: estou em uma nota fiscal e quero consultar um fornecedor, estando consultado fornecedor eu quero consultar cliente, e novamente consultar produtos, e assim sucessivamente ou seja eu chamo o mesmo formulário n vezes e depois saio retornando até o ponto inicial, como se fosse uma pilha, então em harbour comecei a implementar um formulário para fazer o que fazia em Clipper, até aí blz já está fazendo a consulta de tabelas o problema é que após a primeira consulta está instanciada eu não consigo fazer a segunda gerando um erro de que o formulário já existe. “Window:form1 already defined. Program Termined.”
Existe solução pra este problema, por favor ajude-me. Obrigado.
Nota de Moderação:
Toledo: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o [x]Harbour.
Avatar de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Pablo César » 18 Nov 2013 08:49

Cavalo Marinho escreveu:estou em uma nota fiscal e quero consultar um fornecedor, estando consultado fornecedor eu quero consultar cliente, e novamente consultar produtos, e assim sucessivamente ou seja eu chamo o mesmo formulário n vezes e depois saio retornando até o ponto inicial, como se fosse uma pilha
Olá. Acho que deverias ter postado na seção Minigui, se é a solução que esperas seja para HMG. Pois acredito que a sua dificuldade não esteja em Harbour em si, pois como você mesmo disse, está aproveitando a mesma rotina que tinha no Clipper.

Tanto Minigui Extended como HMG, possuem um complemento para identificador do formulário. Você criar o seu fomulário padrão que irá utilizar nas diversas pesquisas e carregá-lo através do comando:
LOAD WINDOW <arquivo_fmg> AS <nome_ do_novo_form>

Observe em vermelho o "AS" é uma espécie de alias que antecede ao nome do Form que você pode dar para cada pesquisa. Dê nomes diferentes conforme as opções de pesquisas. E para cada pesquisa você seguramente terá uma rotina diferente que ai fica mais fácil de diferenciar e dar o nome correto do form para cada opção.

Dê uma olhada em:

C:\hmg.3.0.35\SAMPLES\MULTI.INSTANCE

Se você utilizar a nova versão da HMG (atualmente, 3.1.5 em UNICODE), você encontra em:

C:\hmg.3.1.5\SAMPLES\ProgramExecution\MULTI.INSTANCE

Mas por favor surgirem mais dúvidas a respeito é bom fazê-lo na seção Minigui e de preferência poste seu código fonte ou parte dele para pode exemplificar melhor as nossas indicações.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Cavalo Marinho » 18 Nov 2013 14:49

Boa tarde, em primeiro lugar gostaria de pedir desculpa aos moderadores por ter colocado a minha dúvida na seção errada, prometo que vou prestar mais atenção na proximas postatem, e agradecer tambem ao amigo Paulo Cesar pela diga, ja fiz uns testezinhos básicos e funcionou com 3 forms abertos, Muito obrigado, creio que vou pedir muito a ajuda de voces, mas estou empolgado com a ferramenta, aproveitando se alguem souber de uma boa apostila (Portugues) sobre harbour e Hmg por favor me indiquem.
Avatar de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Pablo César » 18 Nov 2013 18:04

Cavalo Marinho escreveu:ja fiz uns testezinhos básicos e funcionou com 3 forms abertos
Quê bom que está servindo.

Cavalo Marinho escreveu:aproveitando se alguem souber de uma boa apostila (Portugues) sobre harbour e Hmg por favor me indiquem.
Veja nesta mensagem algumas das indicações:

http://www.pctoledo.com.br/forum/viewtopic.php?p=85471#p85471

Mas em português vai ser difícil. Mas acho que é bom você praticar com o inglês porque existe muito material e que não é atualizado. Eu lembro que eu já deixei este o arquivo Helps.rar como anexo aqui no fórum, mas não consegui encontrar o tópico. Talvez seja melhor disponibilizá-lo na área de Downloads ou em alguma seção que atenda a finalidade de poder ser baixado. (pois agora não consigo disponibilizá-lo como anexo)

Inclusive tem um blog do brasileiro e colega Daniel Crocciari: http://hmglights.wordpress.com/
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Pablo César » 18 Nov 2013 18:28

Pablo César escreveu:Eu lembro que eu já deixei este o arquivo Helps.rar como anexo aqui no fórum, mas não consegui encontrar o tópico.
Achei ! neste tópico clique em "baixe aqui"
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Cavalo Marinho » 18 Nov 2013 19:49

Boa noite, mas uma vez tiver um problema e não conseguir me sair, parece facil mas como estou começando não conseguir entender
o problema é o seguinte: Conforme a dica do amigo Paulo Cesar, criei um formulário generico que contem alguns objetos, no memento somente dois, (ira ter mais componentes) um label e um browse para exibir dados de uma tabela, pois bem, para chamar este forumalario eu instancio com: load window xxxxx as yyyyy, quando quero setar propriedades dos componentes deste formulario funciona pro label e pro browse gera um erro de sintaxe
Exemplo yyyy.title := "formulario de consulta" funciona beleza
yyyy.label_1.value := "teste" funciona beleza
yyyy.browse_1.workarea := "forne" nao funciona
yyyy.browse_1.fields := {'campo', 'campo2'} nao funciona e assim por diante
estou anexando o projetinho para facilitar as coisas, agradeço desde já qualquer ajuda, Obrigado
estou utilizando HMB 3.1.5

Mais uma coisa: como saber a instancia que estou trabalhando, veja quando instancio o formulario com o nome forne por exemplo eu desabilito o botão ou menu que chamou para que o usuario nao click novamente gerando um erro, quando eu fechar este formulario no evento onrelease eu quer habilitar o botao exato que chamou aquele formulário, por tanto se fiz 3 chamadas ao formulario com nomes diferentes eu quero desabilitar exatamente o botao ou menu que o chamou.
Anexos
projeto_hb.rar
(1.64 MiB) Baixado 193 vezes
Avatar de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Pablo César » 19 Nov 2013 08:42

Cavalo Marinho escreveu:yyyy.browse_1.workarea := "forne" nao funciona
yyyy.browse_1.fields := {'campo', 'campo2'} nao funciona e assim por diante
Oi você tem nome que possamos te tratar ? Imagine tratar você de cavalinho... rs :)

Estas propriedades, se você olhar no HMG.CHM verá que são apenas atribuíveis durante a DEFINIÇÃO. isto é quando são definidas no momento de criar-las.

Screen.PNG
Screen.PNG (6.94 KiB) Visualizado 4304 vezes


Acho que você vai ter que colocar variável e vetor para os campos e atribuir redefinindo area e campos novamente e como eu tinha te dito anteriormente na função especifica para cada ação/modalidade. Se isso não funcionar. Você poderia mudar o seu BROWSE para GRID.

Cavalo Marinho escreveu:Mais uma coisa: como saber a instancia que estou trabalhando, veja quando instancio o formulario com o nome forne por exemplo eu desabilito o botão ou menu que chamou para que o usuario nao click novamente gerando um erro, quando eu fechar este formulario no evento onrelease eu quer habilitar o botao exato que chamou aquele formulário, por tanto se fiz 3 chamadas ao formulario com nomes diferentes eu quero desabilitar exatamente o botao ou menu que o chamou.
Aqui é uma questão de lógica. Se o usuário abriu o forne e depois clica no botão clientes, o form forne, não deve fechar, sim deve abrir o form clientes (quando digo o form é o alias do form, certo ?). Mas se fechar a janela do form forne, você terá que verificar por exemplo o título da janela. Ai vai conseguir diferenciar para "re-habilitar" o botão que estava desabilitado enquanto o form estava aberto.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 151 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Toledo » 19 Nov 2013 20:21

Cavalo Marinho escreveu:yyyy.browse_1.workarea := "forne" nao funciona
yyyy.browse_1.fields := {'campo', 'campo2'} nao funciona e assim por diante


Amigos, veja este exemplo:

Arquivo Main.prg
#include <hmg.ch>

Function Main

        Load Window Main
        Main.Center
        Main.Activate

Return

Function manutForne()
   Private area_:="forne", aHeaders_:={'Código', 'Nome do Fornecedor'},;
           aFields_:={'codif', 'nomef'}, aWidths_:={50,600}
   load WINDOW fConsulta as ConsForne
   ConsForne.title := "Manutenção do Modulo de Fornecedores"
   ConsForne.lblTitulo.value := "Manutenção do Modulo de Fornecedores"
   ConsForne.lblTitulo.FontSize := 20
   ConsForne.lblTitulo.FontBold := .t.
   
   ConsForne.center
   ConsForne.activate
   
return

Function manutGrupo()
   Private area_:="grupo", aHeaders_:={'Código', 'Descrição do Grupo'},;
           aFields_:={'grupo', 'grupodesc'}, aWidths_:={60,600}
   load WINDOW fConsulta as ConsGrupo
   ConsGrupo.title := "Manutenção do Modulo de Grupo de Produtos"
   ConsGrupo.lblTitulo.value := "Manutenção do Modulo de Grupo de Produtos"
   ConsGrupo.lblTitulo.FontSize := 20
   ConsGrupo.lblTitulo.FontBold := .t.   
   ConsGrupo.center
   ConsGrupo.activate
   
return

Function Sair()
quit

Function AbrirArquivos()
request dbfcdx
rddsetdefault("dbfcdx")
dbsetdriver("dbfcdx")

//dbUseArea(.T., "DBFCDX", "ESTGRUPO", "GRUPO")
select 0
use estgrupo alias grupo

if(!file("GRUPO.CDX"))
   index on grupo tag gcodigo to "grupo.cdx"
   index on grupodesc tag gdesc to "grupo.cdx"
ENDIF
set index to GRUPO.CDX

select 0
use g00forne alias forne

if(!file("FORNE.CDX"))
   index on CODIF tag Fcodigo to "FORNE.cdx"
   index on NOMEF tag FNOME to "FORNE.cdx"
ENDIF
set index to FORNE.CDX

Function FecharArquivos()
   close databases
   
Function SetaBotoes(lTipo)
   If ThisWindow.Name = "ConsForne"
      SetProperty( "Main", "tFornecedores", "Enabled", lTipo )
      SetProperty( "Main", "pFornecedores", "Enabled", lTipo )     
   Endif
   If ThisWindow.Name = "ConsGrupo"
      SetProperty( "Main", "tGruposProd", "Enabled", lTipo )   
      SetProperty( "Main", "pGrupos", "Enabled", lTipo )     
   Endif


No arquivo fConsulta.Fmg alterar:
ON INIT SetaBotoes(.F.) ON RELEASE SetaBotoes(.T.)

e também:
        WIDTHS aWidths_
        HEADERS aHeaders_
        WORKAREA &area_
        FIELDS aFields_


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3065
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 246 vezes
Mens.Curtidas: 242 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor Cavalo Marinho » 20 Nov 2013 08:36

Bom dia a todos, venho aqui agradecer a Pablo Cesar e ao Toledo pela dicas, isso me dar força para tocar em frente, Muito Obrigado -:]
Avatar de usuário

Cavalo Marinho
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 142
Data de registro: 01 Ago 2009 10:01
Cidade/Estado: Aracaju/Se
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Multiplas chamadas de um mesmo fomulário

Mensagempor syslink » 29 Mar 2020 12:49

bom dia
alguem tem exemplo de um formulario padrao q possa ser usado para clientes, produtos, fornecedores, vendas, etc
ou terei q fazer um por um
tem como ser no objetc pascal onde vc cria um formulario padrao e os botoes, label, textbox, etc vai colocano a medida q for necessario
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 126
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro