14/03/2010

Componentes dinâmicos

Como adicionar dinamicamente componente em uma janela do RealBasic ?

É comum nos depararmos com a necessidade de adicionarmos campos de texto, botões ou outro componente de tela enquanto o programa está funcionando. Imagine fazer um calendário aonde cada um dos 31 dias seja um botão para selecionar o dia? É muito chato e demorado ter que colocar um por um e ainda levando em conta que eles mudam de lugar a cada mês.

É muito fácil se fazer isso no RealBasic. Só lembrando que o resultado é um Array de controles.

Insira o objeto desejado na tela, Nas propriedades, altere o Index para 0.

Declare uma Variável com o tipo do objeto em questão, em seguida atribua o valor a ela como sendo seu novo objeto.

Dim pb As PushButton
pb = New PushButton1

Em seguida é só alterar as propriedades que desejar e pronto, já temos dois botões na tela.

E para remover o objeto, basta acessar o método close:

PushButton1(n).Close

Para estender o uso sem muito trabalho podemos usar um conjunto de For ... next e criar quantos botões forem

necessário

Exemplo:

Seguindo os passos a cima, coloque um botão em uma janela e defina a sua altura e largura pra 22, e seu caption para 0. No evento Open da janela digite:

Dim x,y,n,c,l,t As integer 'Declarar das variaveis
Dim pb As PushButton 'Declarar objeto
l = PushButton1(0).Left 'Obter posição
t = PushButton1(0).Top
n = 1 'iniciar coluna em 1
for y = 0 to 5 'contar 6 linhas
for x = n to 4 'contar 5 colulas
pb = New PushButton1 'criar novo botão
pb.Left = x * 22 + l 'Posicionar botão
pb.Top = y * 22 + t
c=c+1 'Numero para exibir
pb.Caption = str(c) 'Exibir Numero
next
n=0 'zerar coluna
next
O resultado será similar a este:

Nenhum comentário:

Postar um comentário

Escreva à-vontade. mas dê prioridade ao idioma Português, e lembre-se, aqui não é o MSN, ICQ, etc. mais de uma pessoa vai ler, então tente escrever a palavra toda.
E a propósito.
Os comentários estão sem moderação. Caso sua TESTOSTERONA ou TPM esteja em níveis elevados, lembre-se que crianças visitam esse blog. ;)