View Full Version : Dúvida simples (penso) em VB


NoNick
07-02-2007, 11:47
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.

Kayvlim
08-02-2007, 01:52
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

NoNick
08-02-2007, 16:41
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

NoNick
08-02-2007, 19:37
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.

HecKel
08-02-2007, 20:15
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

Kayvlim
08-02-2007, 20:31
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

NoNick
08-02-2007, 22:38
Funcionou, obrigado mais uma vez :)

Penso que já n devem surgir erros daqui para a frente.