View Full Version : VB6


tita154
21-04-2007, 23:30
Há alguma maneira de o utilizador poder adicionar elementos ele próprio?
Do género, ao clique de um botão, adiciona uma Label com caption defenida pelo utilizador numa textbox. E kem diz Label diz ListBox.

MRKawa600
21-04-2007, 23:59
Sim através do uso de arrays de controlos. Por exemplo tens uma label chamada lblArray, colocas o index do controlo em = 0, depois quando clicas no botão.

Me.Controls.Add(Me.lblArray)

O que te irá criar uma nova label (com index = 1)

È isto!

tita154
22-04-2007, 00:20
Mas aí não terei de pôr um array por cada Label a ser criada?

O objectivo é ter a possibilidade de um nº infinito de labels (teoricamente claro).

MRKawa600
22-04-2007, 07:29
Não, basta existir uma (que por acaso até podia ser criada por código,tb).

Cada vez que evocares o add da label definida como array, irás criar uma nova label para esse mesmo array, ou seja, se tinhas essa label uma vez no form, ao fazeres add, ficas com duas labels no form, as duas tem o mesmo "name" mas "index" diferente.

Existe um limite no tamanho do array (não me lembro qual é agora, acho que o index é integer, por isso 32mil...), deve chegar para o que precisas . :)

tita154
22-04-2007, 10:27
32mil? hmmm......deixa-me ver.......acho k serve. :P
Brigadão.

Já agora, como é k fica o código do botão? (ainda não estou muito dentro dessa matéria)

tita154
23-04-2007, 12:14
Still waiting.....

MRKawa600
23-04-2007, 12:58
Exemplo sem usar arrays.

Para um form com:
1 button - cmdCriarLabel
1 TextBox -txtbxTexto


Option Explicit

Dim ctlNew As Control
Dim iLblNumber As Integer

Private Sub cmdCriarLabel_Click()
'para poder criar uma label com um name diferente, cada vez que clicares no botão
iLblNumber = iLblNumber + 1
'criar o novo controlo
Set ctlNew = Me.Controls.Add("VB.Label", "lblNew" + CStr(iLblNumber), Me)
'atribuir o caption em função do que está na textbox
ctlNew.Caption = txtbxTexto.Text
'Colocar aqui código para reposicionar a nova label

'por o controlo visível
ctlNew.Visible = True
End Sub

tita154
23-04-2007, 16:24
Tx. Ajudou muito.