Ir para conteúdo
Fórum Script Brasil
  • 0

Desocultar textbox uma a uma ( novato )


pcmaniero

Pergunta

Boa tarde galera, estou tendo um problema que não consigo resolver !

É o seguinte, criei 3 textbox e as ocultei no form_load e tentei criar um comando para que elas apareção uma a uma clicando no botao ( cada click aparece uma ), mais isso não acontece! Eu clico e aparece logo as 3 de uma só vez !! me ajudem por favor !!

segue o codigo...

Private Sub Command1_Click()

Dim i As Integer

For i = 1 To 3

Form1.Controls("text" & i).Visible = True

Next i

End Sub

Private Sub Form_Load()

Text1.Visible = False

Text2.Visible = False

Text3.Visible = False

End Sub

Obrigado !

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Opa rapaz, tudo bom? primeiramente bem vindo ao forum....

Para fazer em todos textbox, você poder usar o for each, apesar de começar com FOR ele é diferente do for...

O código seria esse, só precisa adaptar com o nome do seu form...

dim objeto
For Each objeto In Form1.Controls
If TypeOf objeto Is TextBox Then
objeto.Visible = True
End If
next
Abraços :D --edit-- Cara, entendi errado sua duvida... perai que vou desenvolver aqui e já posto --edit² Não consegui fazer utilizando for... mas dessa forma acho q atende o q você quer fazer..
Private Sub Command1_Click()
If Text1.Visible = False And Text2.Visible = False And Text3.Visible = False Then
Text1.Visible = True
ElseIf Text1.Visible = True And Text2.Visible = False And Text3.Visible = False Then
Text2.Visible = True
ElseIf Text1.Visible = True And Text2.Visible = True And Text3.Visible = False Then
Text3.Visible = True
End If
End Sub

Abraços :D

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0
Opa rapaz, tudo bom? primeiramente bem vindo ao forum....

Para fazer em todos textbox, você poder usar o for each, apesar de começar com FOR ele é diferente do for...

O código seria esse, só precisa adaptar com o nome do seu form...

dim objeto
For Each objeto In Form1.Controls
If TypeOf objeto Is TextBox Then
objeto.Visible = True
End If
next
Abraços :D --edit-- Cara, entendi errado sua duvida... perai que vou desenvolver aqui e já posto --edit² Não consegui fazer utilizando for... mas dessa forma acho q atende o q você quer fazer..
Private Sub Command1_Click()
If Text1.Visible = False And Text2.Visible = False And Text3.Visible = False Then
Text1.Visible = True
ElseIf Text1.Visible = True And Text2.Visible = False And Text3.Visible = False Then
Text2.Visible = True
ElseIf Text1.Visible = True And Text2.Visible = True And Text3.Visible = False Then
Text3.Visible = True
End If
End Sub

Abraços :D

Vlw mesmo pela ajuda! deu certo ! mais não vai resolver meu problema ! porque to fazendo um projeto com +/- uns 35 textbox, ficaria muito extenso !

Por isso que queria fazer com um laço que jogasse um valor de 1 a 35 por exmplo, no lugar do (i) do text(i) .

Sera que tem como?

abraços e obrigado mesmo pela ajuda vou usar esse codigo como referencia em outras ocasiões!

obrigado !

Link para o comentário
Compartilhar em outros sites

  • 0
e ai beleza.

Tenta isso.

Dim obj As Variant

Dim bool As Boolean

bool = False

For Each obj In UserForm1.Controls

If Mid(obj.Name, 1, 4) = "Text" Then

If obj.Visible = False And bool = False Then

obj.Visible = True

bool = True

End If

End If

Next

At.

hahah !! deu certo ! vlw mesmo !! \o

teria como você explicar linha por linha pra mim? sou iniciante em vb ! não quero ficar colando codigos, quero apreender!! :D

Obrigado mesmo !!

Link para o comentário
Compartilhar em outros sites

  • 0
e ai beleza.

Tenta isso.

Dim obj As Variant - declarou a obj

Dim bool As Boolean - declarou a bool

bool = False - declarou que bool é falso

For Each obj In UserForm1.Controls - esse comando seleciona todos objetos do formulario

If Mid(obj.Name, 1, 4) = "Text" Then - ele selecionou as quatro primeiras letras de um text, poderia usar também "if typeof obj is textbox" daria no mesmo

If obj.Visible = False And bool = False Then - se o objeto estiver invisivel e a variavel ainda for false então...

obj.Visible = True - objeto fica verdadeiro

bool = True - variavel de false passa a ser verdadeira

End If - fecha condição

End If - fecha condição

Next - fecha o for

Eu fiz esse esquema aqui e não deu certo :(, vb me odeia... mas segue ai explicação de cada linha :D

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

ok.

espero que entenda.

'///// variaveis //////

Dim obj As Variant

Dim bool As Boolean

'///// tipo boleano é 0 e 1, ou verdadeiro e falso

bool = False '//// define o boleano como falso.

For Each obj In UserForm1.Controls '//// carrega cada um dos controles do form para o objeto (textbox, buttons, etc.)

If Mid(obj.Name, 1, 4) = "Text" Then '//// se os 4 digitos do nome do objeto for "Text" no caso Textbox

If obj.Visible = False And bool = False Then '// se o textbox estiver invisivel e boleano for falso.

obj.Visible = True '/// liga o textbox

bool = True '/// define o boleano como verdadeiro. isso garante que o botao ligue apenas um textbox por vez.

End If

End If

Next '/// fim do for each

Link para o comentário
Compartilhar em outros sites

  • 0

Essa linha pode apresentar erro caso o nome do seu text não seja "text" no começo...

If Mid(obj.Name, 1, 4) = "Text" Then

Nesse caso, ele checa o tipo, então independente do nome ele faria...

if typeof obj is textbox

Caso o nome de todos seja "text" no começo, não há necessidade de alterar

Abraços :D

Link para o comentário
Compartilhar em outros sites

  • 0

os codigos ficaram bem legais, mas acho q podia ficar mais simples. aquele codigo do For era o melhor pois faria muito menos processamento (não tem q percorrer todos os controles do formulario a cada clique), mas, em vez de chamar o For dentro do clique, o q faria com q todos os Visibles fossem mudados de uma vez, você deveria executar cada passagem a cada clique do botao.

exemplo, se você declarasse uma variavel i no Generals, inicializasse-a com 1 no Form_Load, usasse a linha do primeiro post q pega o Me.Controls() pra mudar o Visible e então depois somasse 1 na variavel, ai você teria o mesmo resultado com menos linhas e menos processamento.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...