Página 1 de 1

Criação dinâmica de controles

Enviado: 19 Ago 2018 23:22
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.

Criação dinâmica de controles

Enviado: 19 Ago 2018 23:24
por Heero
Erro apresentado:

Criação dinâmica de controles

Enviado: 20 Ago 2018 00:18
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.

Criação dinâmica de controles

Enviado: 20 Ago 2018 07:28
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,

Criação dinâmica de controles

Enviado: 20 Ago 2018 08:10
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.

Criação dinâmica de controles

Enviado: 21 Ago 2018 17:28
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.