Fórum scrollbox do delphi 4 ou 5 tem bugs? #327751
18/08/2006
0
Coloquei alguns componentes como memos, labels e images dentro de um scrollbox, que se dimensionam variadamente e de acordo com o conteudo de um banco de dados . O scrollbox deveria ajustar a barra de rolagem vertical automaticamente, quando o conteudo dos componentes fosse maior do que a tela. Só que o comportamento do scrollbox está completamente aleatorio, ora aparece a barra de rolagem mesmo com o conteudo que caberia todo na tela, ora desaparece, e o scroll da barra não se posiciona automaticamente no ponto superior à medida que os registros vão sendo trocados. Para isso teria de colocar um sendmessage via API para rolagem ou um scrollby, o que parece ser uma gambiarra. A propriedade do scrollbox está em autosize := false (se fosse true some a barra de rolagem mesmo quando o conteudo passa da tela) e autoscroll := true. Alguém já teve problema semelhante?
Scienter8
Curtir tópico
+ 0
Responder
Posts
18/08/2006
Massuda
Só que o comportamento do scrollbox está completamente aleatorio, ora aparece a barra de rolagem mesmo com o conteudo que caberia todo na tela, ora desaparece, e o scroll da barra não se posiciona automaticamente no ponto superior à medida que os registros vão sendo trocados.
Tenho um programa que tem alguns grids dentro de um scrollbar (uso Delphi 5) e não observo esse tipo de comportamento. Meu scrollbox está com Align = alClient dentro de um painel de tamanho fixo.Os itens que estão dentro do scrollbox estão com AutoSize = True ou tem seu tamanho recalculado quando o conteúdo é alterado?
Com relação ao posicionamento, o scrollbox sempre tenta mostrar o controle que tem o foco, mas tem um bug quando o controle que é maior que a parte visível do scrollbox (por exemplo, um memo ou grid grande)... nesse caso, o scrollbox sempre posiciona de modo que o topo do controle fique visível, que não é necessariamente a parte do controle que tem o foco.
autosize := false (se fosse true some a barra de rolagem mesmo quando o conteudo passa da tela)
AutoSize = True faz com que o scrollbox tente se dimensionar de modo que todo o conteúdo dele fique visível, não sendo preciso ter o scrollbar. O código é otimista, assume que terá sucesso, por isso o scrollbar não é exibido. Logo, use sempre AutoSize = False.
Responder
Gostei + 0
18/08/2006
Scienter8
Os itens que estão dentro do scrollbox têm o tamanho redimensionado para que comportem todo o texto, por exemplo. Se em um registro eles aumentam de tamanho e aparece a barra de rolagem, no outro, quando diminuem e passam a caber na tela, a barra de rolagem não some automaticamente mesmo com autoscroll := true;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)