Propriedade Visible no FormShow não funciona
12/01/2006
0
Bom dia a todos....
estou com um problema um tanto quanto estranho. Tenho um PageControl com várias abas. Na aba ativa (Default) do PageControl existem alguns componentes que podem ou não ser mostrados, de acordo com a configuração do usuário. Esta verificação é realizada no FormShow, onde a propriedade Visible dos componentes é alterada.
O problema é que se o componente está visível e eu altero a propriedade para FALSE ele não desaparece e quando ele está invisível e mudo para TRUE ele continua invisível :(
O mais estranho é que se eu mudar de aba no PageControl e retornar a default os componentes assumem os valores que eu defini no FormShow.
Já testei usar o Refresh, Repaint, Invalidate, etc.... nada faz funcionar!
Alguém já viu algo parecido com isso???
Obrigado
estou com um problema um tanto quanto estranho. Tenho um PageControl com várias abas. Na aba ativa (Default) do PageControl existem alguns componentes que podem ou não ser mostrados, de acordo com a configuração do usuário. Esta verificação é realizada no FormShow, onde a propriedade Visible dos componentes é alterada.
O problema é que se o componente está visível e eu altero a propriedade para FALSE ele não desaparece e quando ele está invisível e mudo para TRUE ele continua invisível :(
O mais estranho é que se eu mudar de aba no PageControl e retornar a default os componentes assumem os valores que eu defini no FormShow.
Já testei usar o Refresh, Repaint, Invalidate, etc.... nada faz funcionar!
Alguém já viu algo parecido com isso???
Obrigado
Fabricio Lb
Curtir tópico
+ 0
Responder
Posts
12/01/2006
Marco Salles
Alguém já viu algo parecido com isso???
Sim , porque este evento , ao inciar o aplicativo ele ocorre ´antes´ da Criação efetiva do formulário
Várias Solucoes para isto , entre elas :
1)Voce repetir o que voce quer definir no evento onShow da aba no evento on show do formulário... Eu digo repetir
2)Outra solução é voce enviar uma mengame personalizada do windows . Isto introduz um atraso e ela sera elaborada depois que o manipulador de evento atual (Nocaso o formShow da Aba) tiver concluido sua execução....
Um Exemplo vale mais que mil palavras...
[b:a93c2382d4]Tente fazer um exemplo com um page contro e uma aba e tres Edits para entender o que estou dizendo[/b:a93c2382d4]
e defina
private procedure Desabitar(var Ms : Tmessage); message Wm_User;
procedure TForm1.TabSheet1Show(Sender: TObject); begin postMessage(handle,Wm_User,0,0); end;
procedure TForm1.Desabitar(var Ms: Tmessage); begin edit1.Visible:=False; end;
Boa sorte...
Responder
12/01/2006
Fabricio Lb
Valeu Marco, deu certo....
peguei o seu exemplo e funcionou. Só que coloquei no FormShow do próprio formulário.
Valeu
peguei o seu exemplo e funcionou. Só que coloquei no FormShow do próprio formulário.
Valeu
Responder
Clique aqui para fazer login e interagir na Comunidade :)