Criação dinâmica de controles

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Criação dinâmica de controles

Mensagem por Heero »

Olá,

Três anos de cadastro e só agora resolvi criar um tópico. É que dessa vez não sei mesmo como fazer. Me desculpem se já tem alguma solução a respeito no fórum, realmente não achei.

Estou convertendo um sistema usando MiniGUI e me deparei com uma situação no qual preciso criar vários labels juntamente com textbox. Porém ao declarar o nome do controle, parece que não se pode usar variáveis de referência ou macro.

Tentei utilizando FOR:

Código: Selecionar todos

	

qtcpo =tab_qtcpo // Estou pegando a quantidade de campos de uma tabela

for i=1 to qtcpo
    @ 02,000 label &qtcpo;
       width 400;
       height 030;
       value 'test';
       font 'verdana' size 12;
next
Já estou convencido que realmente não tenha como fazer, pelo menos não dessa forma que estou tentando. Tem jeito de contornar isso sem ter que criar uma a uma? Pois a quantidade é variada.

Obrigado pela atenção.
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Criação dinâmica de controles

Mensagem por Heero »

Erro apresentado:
Anexos
erro.png
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criação dinâmica de controles

Mensagem por JoséQuintas »

Macro de número não existe

Controle com um nome que não é nome, é número

Corrigindo isso, é um começo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Criação dinâmica de controles

Mensagem por Toledo »

Faz assim que vai dar certo:

Código: Selecionar todos

for i=1 to qtcpo
    cLbl := "Lbl_"+AllTrim(Str(i))
    @ 02,000 label &cLbl ;
       width 400;
       height 030;
       value 'test';
       font 'verdana' size 12;
next
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
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Criação dinâmica de controles

Mensagem por Heero »

Toledo,

Muito obrigado!
Continuou a apresentar o mesmo erro, porém ao substituir as aspas duplas por simples funcionou.

No fim ficou dessa forma:

Código: Selecionar todos

      
wlin := 40
for i=1 to qtcpo
    cLbl := 'Lbl_'+AllTrim(Str(i))
    cTxt := 'Txt_'+AllTrim(Str(i))
    wlin := wlin + 20
   @ wlin,000 label &cLbl ;
       width 400;
       height 030;
       value 'test';
       font 'verdana' size 12
			 
   @ wlin,040 textbox &cTxt ;
       width 100;
       height 025;
       value 'testing';
       font 'verdana' size 12
next
JoséQuintas:
Desculpe pela falha.

Obrigado! Problema resolvido.
Anexos
resultado.png
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criação dinâmica de controles

Mensagem por JoséQuintas »

Ok.
Talvez mais fácil pra lembrar: o nome do controle é o mesmo nome de uma variável.
Isto também é interessante lembrar quando for abrir mais de um form, porque não pode usar nome repetido.
Lógico... multithread é outra história, porque não vai existir nome repetido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder