AJUDA COM SWITCH DADO BOOLEANO

FABIANOWALLAXX 03/07/2012 11:46:08
#405415
Olá gente.
Seguinte: estou iniciando meus estudos em VB.
estou com um problema aqui no VB6 que eu já tentei de tudo ao meu alcance e gostaria que vcs me ajudassem,por favor.

tenho um formulário aqui com um textbox e um command button.
Estou tentando fazer o seguinte.A Textbox fica trancada (locked =true) até que se aperte o command button pra poder escrever nela.
esse método aqui deu certo.
No FORMULÁRIO:
txtCaixa.locked =true

NO COMMAND BUTTON
txtCaixa.locked=false


Só que eu quero fazer o seguinte para economizar códigos e até por que a variável vai ser comum em todo o projeto.Eu quero criar uma switch com as propriedades TRUE e FALSE para poder ficar ligando e desligando a edição.Eu fiz o seguinte:

No formulário

Dim switch AS Boolean
If switch = true Then
txtCaixa.locked =false
else
txtCaixa.locked = true
end if


Aí que está.Sei que esse código está certo.O problema é chamar a variável no botão de comando.é nesse pinto que eu quero um help.

Tipo eu ja tente colocar no botão :[Ô]switch=true[Ô](habilitar a var de forma simples),[Ô]Form1.switch =true[Ô](nome do formulário + variavel); porém nenhuma deu certo. Dá método desconhecido ou faltando objeto.

Espero resposta.Desde já agradeço



KERPLUNK 03/07/2012 11:58:47
#405416
Não precisa disso tudo... Se o que você quer é [Ô]habilitar quando desabilitado e desabilitar quando habilitado[Ô] ou seja, uma funcionalidade [Ô]toggle[Ô], use no botão o código:
txtCaixa.Locked = Not txtCaixa.Locked

Simples assim
FABIANOWALLAXX 03/07/2012 20:56:58
#405467
Obrigado, meu amigo Kerplunk.Mas deixa eu explicar melhor.Nos formulários tem 8 caixas cada e ficar digitando uma por uma é que é o problema.Pensei nessa switch para agilizar e economizar argumentos.Na real meu código está assim no formulário:

Private Sub Form_Load()
Dim switch As Boolean
If switch = True Then
txtCaixa.Locked = False
txtCaixa2.Locked = False
txtCaixa3.Locked = False
Else
txtCaixa.Locked = True
txtCaixa2.Locked = True
txtCaixa3.Locked = True
End If

End Sub


O que eu quero é acessar essa variável de um botão de comando pra poder editar/ trancar a textbox.Vale ressaltar que ainda vão os botões [Ô]Adicionar[Ô],[Ô]Gravar[Ô],[Ô]Editar[Ô] e [Ô]Apagar[Ô].Seria muito mais simples eu digitando apenas uma linha pra habilitar e desabilitar do que escrever códigos grandes em botão por botão.

Quem tiver a solução me responda por favor
VELDRAME 04/07/2012 16:14:08
#405525
Resposta escolhida
No botão:
Call comando(xxxx) => xxxx é igual a TRUE OU FALSE

Crie uma Sub no formulário ou em um modulo (no caso ficaria [Ô]Public Sub[Ô])
Sub comando(byval switch as boolean)
If switch = True Then
txtCaixa.Locked = False
txtCaixa2.Locked = False
txtCaixa3.Locked = False
Else
txtCaixa.Locked = True
txtCaixa2.Locked = True
txtCaixa3.Locked = True
End If
End sub

Quando você quiser chama a função é só usar:
Call comando(xxxx) => xxxx é igual a TRUE OU FALSE

Assim você escreve o comando uma vez e chama com uma linha.
MARCELO.TREZE 04/07/2012 17:19:24
#405533
bom da maneira mais economica possivel.

coloque um timer em seu projeto com a propriedade interval =1 e o botão para destravar as textbox

e cole

[txt-color=#007100][ô] você declara txtName no General do form[/txt-color]
Dim txtName As String

Private Sub Timer1_Timer()
If TypeOf Me.ActiveControl Is TextBox Then txtName = Me.ActiveControl.Name
End Sub

Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Me
If txtName = ctl.Name Then
If ctl.Locked = True Then
ctl.Locked = False
Else
ctl.Locked = True
End If
ctl.SetFocus
ctl.SelStart = 0
ctl.SelLength = Len(ctl.Text)
End If
Next
End Sub


o código acima simplesmente vai travar ou destravar qualquer textbox que estiver com o foco, que vc colocar em seu from, independendo da quantidade de textbox que existirem.

veja se era isto




FABIANOWALLAXX 04/07/2012 17:35:03
#405534
é isso mesmo Marcelo.Muito obrigado a todos, agora tenho várias soluçõe spro problema
MARCELO.TREZE 04/07/2012 17:36:09
#405535
só não esquece de encerrar ok

abraço

Tópico encerrado , respostas não são mais permitidas