View Full Version : Dúvida simples (penso) em VB
Bem, estou a fazer um programa simples e tenho aqui um problema.
Tenho 30 labels, uma text box e um command button (e outras que não são relevantes)
Eu queria fazer uma coisa deste género. Meto um número de 1 a 30 na text box, carrego no command e aquilo muda a caption da label X, onde X é o número que meti na text box. Ora, como era um pouco chato criar um If para cada número possível, não existe uma maneira mais rápida?
Não é bem isto o que estou a fazer, mas se me esclarecerem isto adapto ao que quero. :)
Se não perceberem digam, eu tento explicar melhor.
Obrigado.
Se tiveres as labels como
Label1, Label2, Label3, Label4
terás de fazer IF's. Sei que há uma alternativa, não me lembro como é, mas lembro-me que não era propriamente boa práctica.
Transforma isso tudo em UMA ARRAY de labels, com 30 labels.
Em vez de Label1, Label2 e Label3, chama-lhes a todas Label e muda o Index para 1, 2 e 3 (resultado: Label(1), Label(2) e Label(3) ).
Aí podes fazer
For i = 1 to 30
Label(i).Caption = Text1.Text
Next i
ou o que quiseres delas :)
Cumps [[[[[[]]]]]]
angelofwisdom
Já tava a ver que tinha de ir meter umas 500 linhas de código, tudo repetido lol.
Esse código mudava-me as captions todas ao mesmo tempo, mas já resolvi isso.
Obrigadão. :-D
Pois, agora surgiu mais um "pequeno" problema.
Alguém se sabe dizer como fazer uma condição deste género?
7 <= Text1.text <= 8
neste momento, tenho isto:
If Text2.Text = "12" And Combo1.Text = "mas" And 7 <= (Text4.Text) <= 8 Then
etc
Mas isto funciona se os 2 primeiros factores estiverem certos, independentemente de 3º estar ou não. Se puser por exemplo desta maneira
If Text2.Text = "12" And Combo1.Text = "mas" And 7 <= (Text4.Text) Then
etc
Já so funciona com nºs maiores ou iguais a 7...
Soluções? :s
Thanks.
Não me recordo como se faz isso em visual basic, mas pesquisares nos milhares de sites com ajudas também não te faz mal :P
Aqui fica a sugestão, procura por conversão de String -> Inteiro ;)
Estás a comparar uma string com um inteiro, salvo erro isso vai comparar o código ascii, logo é muito provável que obtenhas resultados errados ;)
abraços, HecKel
a <= b <= c
é equivalente a uma união de
b >= a e b <= c
logo
If Text2.Text = "12" And Combo1.Text = "mas" And (Val(Text4.Text) >= 7 And Val(Text4.Text) <= 8) Then
Val() corrige o que o HecKel disse, e com razão. Estás a comparar o TEXTO Text4 com os NÚMEROS 7 e 8. Para transformares Text4 em números, uma das funções existentes para o processo é o Val(). Também tens i CStr, CInt, CLng, CCur... dependendo se é para String, Integer, Long, Currency... (para String não será, já que o Text da TextBox é uma String).
Cumps [[[[[[]]]]]]
angelofwisdom
Funcionou, obrigado mais uma vez :)
Penso que já n devem surgir erros daqui para a frente.
|
|