VALOR NAO MUDA

IGNORANTE 25/09/2011 13:02:21
#385198
Olá a todos

Tenho várias forms e uma delas, a form8, contém 60 images designadas por Image1(0), Image1(1), ... etc.

De cada uma das forms pode aceder-se à form8 para mostrar as imagens a partir de um certo valor, de cada form inicia-se numa imagem diferente.
Por exemplo, na form3, acede-se à form8 e a primeira imagem a ser mostrada é a Image(35).
Na form6 acede-se à form8 e a primeira imagem a ser mostrada é a Image(27), etc.

Para isso, num módulo, coloquei
Public Página As Integer

Em cada botão das várias forms que conduzem à form8 coloquei

Na form3, Página=35
Na form6, Página=27

Em Form.load da form8, escrevi

n = Página
Image1(n).Visible = True

Acontece que Funciona bem à primeira.
Quando vou aceder de novo à form8 a partir de outra form, o valor de Página é o anterior.

Só à segunda tentativa o valor muda.


O erro está em que quando saio com unload form8 não é apagado o valor de Página.

Alguém me pode ajudar?

Obrigado desde já.







LLAIA 25/09/2011 14:20:21
#385203
No evento Unload do Form8 tente isso:

Set Form8 = Nothing
IGNORANTE 25/09/2011 14:48:39
#385204
Obrigado pela resposta.

Tentei e não resultou.
Estive a ver as instruções do VB e dizem que unload não apaga o valor das variáveis.

Acho que está aqui o problema.
Deve-se apagar, mas como ?

Também o valor de Página é transferido à primeira mas das vezes seguintes só é à segunda.
MMMX 25/09/2011 17:25:21
#385205
Faz o seguinte. No primeiro Load do programa põe n = 0. Isso se essa variável está declarada em módulo como pública, senão põe no Load ou Unload de onde ela estiver declarada.
IGNORANTE 25/09/2011 18:15:27
#385206
Obrigado pela resposta.
Também não resultou.

EDERMIR 25/09/2011 20:06:20
#385211
Confesso que me perdi na explicação.

Você já tentou ZERAR n antes de atribuir outro valor a ele?

MARCELO.TREZE 25/09/2011 21:41:01
#385215
o problema é meio que complicado de se explicar tem de se estudar bem o caso para se fazer a forma correta.

então vamos lá

antes de mais nada temos de informar os colegas que os images já estão no form todos carregados porém coma propriedade visible = false

então como dito pelo colega quando ele chama este form um dos images fica visible igual a true.

para resolver

no unload do form8

For F = 0 to Image1.Ubound
Image1(f).Visible = False
Next f


IGNORANTE 26/09/2011 06:56:00
#385219
Enquanto agora cá se fez dia, aí é noite. Só agora vi as últimas três respostas que agradeço muito.

Porém, nenhuma resultou.

A do Marcelo-treze parecia muito lógica mas não funciona.

Quando acedo à form8 que contém as images da primeira vez, mandando o valor de n, funciona bem. Se mando com n=3, mostra a image(3). Por uma questão de simplicidade a zero e a um são iguais e é mesmo o número que comanda.

Apago a form8 e vou à form4.

Chamo de novo a form8, com n=10. Mostra a image(3) e não a image(10). O valor 3 continuava memorizado na form8.
Se apagar a form8 e tornar a chamar já mostra a 10.

Sem dúvida que é necessário apagar o valor de n quando se faz o unload da form8 mas nenhuma das formas que me indicaram funciona.

As instruções do VB dizem que Unload não apaga os valores das variàveis e parece ser por isso que isto não está a funcionar.
Só apaga se as variáveis estiverem num array efectuado em tempo de execução.
Parece então que o valor de n deveria entrar num array colocado na form8 em run-time.
Mas, como é que isso se faz?

Obrigado a todos.






LLAIA 26/09/2011 09:44:48
#385230
Seria melhor vc postar os códigos envolvidos no seu problema para podermos analisar e reproduzir aqui.
IGNORANTE 26/09/2011 10:18:24
#385235
Trata-se de um programa sobre fractais e que os constrói. Abrange todos os tipos e cada um está em sua página.
As instruções têm 70 páginas e estão em “caixas de texto”, cada uma na sua Image(n).
Todas elas estão colocadas na form8.

Eu quero que quando se chamem as instruções se vá às que respeitam o tipo de fractal que o utilizador está a ver.

Por exemplo,

Os atractores estão na form16. As instruções dos atractores começam na Image(41) da form8.

Os L-Sistemas estão na form9. As instruções dos L-Sistemas começam na Image(53) da form8.

Cada form tem um botão que conduz às instruções que devem ser vistas a partir da sua Image inicial. Depois há botões para fazer mostrar as seguintes.


Pois bem, o que acontece é o seguinte: admitamos que estou na form16 com os atractores. Primo o botão para ver as instruções e ele mostra-me a form8 com a image(41) correctamente.
Eu fecho a form8 e vou aos L-Sistemas. Primo o botão para as instruções. Ele mostra-me a form8 com a Image(41) anterior e não com a Image(53).
Apagando a form8 e voltando a chamá-la já mostra correctamente a Image(53).

Isto quer dizer que fazendo o unload da form8 se manteve o valor da imagem, não foi apagado e deveria ter sido.

O código é o seguinte:


Em form16, para ir ver as instruções
Página = 41
Form8.Visible = True

Em form9 para ir ver as instruções:
Página = 53
Form8.Visible = True

Em form8, onde mostra as instruções:

Em Form Load
For n = 0 To 70
Image1(n).Top = 120
Image1(n).Left = 180
Image1(n).Visible = False
Next n

n = Página
Image1(n).Visible = True

Para fechar a form8 há um botão com o código
Unload Form8
Form8.Visible = False

Já experimentei as sugestões dos posts anteriores e não resultam.
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas