USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Como que armazena um objeto na variavel
léee
OURINHOS
SP - BRASIL
Postada em 30/10/2004 01:19 hs            
tudo bem, pessoal?
 
estou tentando fazer o seguinte:
 
no formulario existem 2 TextBox: um com o name: txta e outro com o name: txtb. Estes sao indexados com 81 index's cada.
Ai, criei um  Text1 e Text2. Se no Text1 digitasse: txta; e no Text2 digitasse: 22. O cursor teria de ir no objeto: txta(22).setfocus, ou seja, teria de interpretar como um comando. O codigo esta abaixo:
 
Dim com As String, num As Byte
com = Text1
num = CByte(Text2)
com(num).SetFocus
O erro foi de "Compile error: Expected array"
OBS: Isto é apenas um teste, pois no programa que estou fazendo, apenas preciso da forma correta de como armazenar um objeto na variavel.
 
Valeu

Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 30/10/2004 01:55 hs            
Será q entendi? dê uma olhada:
 
Private Sub foco(nome_do_controle As String)
dim ctl as control
 
for each ctl in me.controls
if ctl.name = nome_do_controle then 'verifica se o controle q está no form atual é o mesmo q se quer focar
  ctl.setfocus
endif
next ctl
End Sub
 
PARA CHAMAR O PROCEDIMENTO COM UM BOTÃO POR EXEMPLO:
 
Private Sub Command1_Click()
 
Call(text1.text & text2.text) 'chama a Sub Foco com o conteúdo de text1 e text2, por exemplo Text1.text = "texta" Text2.text = "(22)" então concatenado daria: "texta(22)"

End Sub
 
Explicando: o conteúdo da caixa de texto "Text1" e da caixa de texto "Text2" são concatenados e passados para o procedimento. Nele é verificado o nome do controle com o q foi passado para o procedimento. Achando o controle ele é focado.
 
É isso q vc queria?
 
obs.: nem testei o código, se der erro me desculpa...
     
caco
Pontos: 2843

SP - BRASIL
Postada em 30/10/2004 10:26 hs            
Olá! Você pode fazer assim também.
 
Dim com As Control
Set com = Text1(CByte(Text2))
com.SetFocus
 
Abraço!

Messenger: vbdev@uol.com.br

     
léee
OURINHOS
SP - BRASIL
Postada em 30/10/2004 15:36 hs            
Opa, o pessoal tá mandando opinioes, legal!!!
 
ghost: que tipo de for é este, nunca usei assim, explica o que é "each"
for each ctl in me.controls
 
 
caco: eu entendi q o com fica com se fosse txta(22) - exemplo do 1º post. Mas especificamente o que o "set" faz ? Por que nao se pode atribuir assim:
com=Text1(CByte(Text2)) ? É um tipo de confirmaçao da atribuicao já feita em com=Text1(CByte(Text2)) ?
 
Valeu pessoal

Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
     
léee
OURINHOS
SP - BRASIL
Postada em 30/10/2004 16:00 hs            
ei, caco beleza
 
tentei o seu codigo agora, e deu erro na linha: Set com = Text1(CByte(Text2)).
Mas precisamente em cima do Text1 (ficou amarelado)
Compile error: Wrong number of arguments or invalid property assignment
 
Valeu

Nós somos uma família VBWEB, só prosperamos neste ambiente sensato. Meus votos de Felicidade à todos.
     
caco
não registrado
ENUNCIADA !
Postada em 30/10/2004 16:44 hs   
Olá! Desculpe, eu me confundi aqui. Corrigindo:
 
Dim com As Control
Set com = Me.Controls.Item(Text1).Item(Text2)
com.SetFocus
 
'Text1 identifica o nome controle e Text2 o Index no Array
 
Verifique. Abraço!
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página