LABEL/TEXTBOX - após criação do form

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

LABEL/TEXTBOX - após criação do form

Mensagem por microvolution »

Gente boa noite!
Após a criação do DEFINE WINDOW com seus LABELs e TEXTBOX é possível mais tarde no discorrer do programa e decisões do usuário criar novos LABELs/TEXTBOXs usando o PARENT para o formulário?
Nota de Moderação:
por Toledo: POR FAVOR, evite postar a mesma dúvida em dois ou mais tópicos, isto atrapalha o bom andamento do próprio tópico.
Leia as Regras do Fórum:
14 - Evite postar a mesma mensagem mais de uma vez, isto atrapalha e congestiona o fórum. As mensagens duplicadas terão as cópias excluídas, e o participante poderá ser punido caso o ato tenha sido intencional.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

HMG LABEL/TEXTBOX - após criação do form

Mensagem por Toledo »

microvolution escreveu: usando o PARENT para o formulário?
Amigo, você já deu a resposta... é só informar o parâmetro PARENT na criação do objeto LABEL ou TEXTBOX.

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
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

LABEL/TEXTBOX - após criação do form

Mensagem por microvolution »

Toledo escreveu:Amigo, você já deu a resposta...
perguntei pois pensei estar fazendo algo errado, mas, esse LABEL novo só aparece após fechar este formulário...
após este comando:

Código: Selecionar todos

   END WINDOW
ainda crio alguns DRAW. Vejam:

Código: Selecionar todos

   // (...)
   DRAW PANEL         ;
   IN WINDOW Frm_TELA_ENTRADA         ;
   AT  35 ,  10         ; 
   TO 400 , 450
   // (...)
Em seguida encerro com as seguintes linhas:

Código: Selecionar todos

   // (...)
   CENTER WINDOW   Frm_TELA_ENTRADA
   ACTIVATE WINDOW Frm_TELA_ENTRADA
return
Então, depois deste comando de encerramento (RETURN) da função o sistema volta para o local que foi chamada esta função de criação do formulário (óbvio né!) e chama a seguinte função:

Código: Selecionar todos

TRATA_CAMPOS_GUI()
Essa função tem algumas coisas, em especial:

Código: Selecionar todos

static function TRATA_CAMPOS_GUI ()
     set key TECLA_CONT_ANT to CONTEUDO_ANTERIOR
     set key TECLA_CONSULTA to CONSULTA_ARQUIVO
     set key ALT_TECLA_CONSULTA to CONSULTA_ARQUIVO
     OPCOES_CAMPOS ()
     @ 370 , 470 TEXTBOX txtCDPRODUTO  PARENT Frm_TELA_ENTRADA WIDTH 20 HEIGHT 21 FONTCOLOR BLUE BOLD NUMERIC MAXLENGTH 1 ON ENTER { || fCDPRODUTO () } // INPUTMASK "9"
//(...)
Então, este TEXTBOX não aparece no formulário. Por isso que fiz que fiz essa pergunta, pois pensava que funcionaria, mas, não funcionou.
Para matar o quebra cabeças, coloquei um MSG_INFO(), após este TEXTBOX assim:

Código: Selecionar todos

     @ 370 , 470 TEXTBOX txtCDPRODUTO  PARENT Frm_TELA_ENTRADA WIDTH 20 HEIGHT 21 FONTCOLOR BLUE BOLD NUMERIC MAXLENGTH 1 ON ENTER { || fCDPRODUTO () } // INPUTMASK "9"
     MsgInfo("Após TextBox")
     // (...)
Então, o MSGINFO só é acionado após o encerramento do formulário quando clico no X da janela.
Portanto, no meu vago conhecimento, estou entendo que após as cláusulas:

Código: Selecionar todos

   // (...) 
   CENTER WINDOW   Frm_TELA_ENTRADA 
   ACTIVATE WINDOW Frm_TELA_ENTRADA
   // (...)
nada mais adianta tentar colocar no formulário, pois ele já foi ATIVADO.
Estou correto?
Ou o que estou fazendo de errado?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

LABEL/TEXTBOX - após criação do form

Mensagem por Toledo »

microvolution escreveu:nada mais adianta tentar colocar no formulário, pois ele já foi ATIVADO.
Estou correto?
Sim, você está correto, os comandos que você colocar depois de ACTIVATE WINDOW só será executado depois que a janela for encerrada.

Para que estes comandos sejam aceitos depois que ACTIVATE WINDOW for executado, ou você tem que chamar em algum objeto que já está dentro da janela, por exemplo em um botão (BUTTON) ou no parâmetro ON INIT do DEFINE WINDOW (na IDE o ON INIT está na aba Events da propriedade da janela).

Sobre criar objetos no ON INIT veja este outro tópico:
https://pctoledo.org/forum/viewto ... 15#p104755
No tópico acima fala do StatusBar, mas o exemplo pode funcionar para criar qualquer outro objeto (LABEL, TEXTBOX, etc).
microvolution escreveu:set key TECLA_CONT_ANT to CONTEUDO_ANTERIOR
Acho que o SET KEY não vai funcionar, você teria que usar o ON KEY, veja:

C:\hmg.3.4.2\DOC\data\OnKey.htm
C:\hmg.3.4.2\SAMPLES\Events\On_Key\ON_KEY_1 (e ON_KEY_2)

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 do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

LABEL/TEXTBOX - após criação do form

Mensagem por Nascimento »

So endoçando o que o amigo toledo postou tem um exemplo claro que eu achei e postei

https://pctoledo.org/forum/viewto ... fc#p104545

onde cria um textbox , mais se observar cria qualquer outro controle
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder