FORM E OBJETO AUTOAJUSTÁVEIS NA RESOLUÇÃO
Estive um tempo longe por causa da demanda de meu serviço... retornando hoje
Uso vb6 + SQL server (e não posso hoje aprender outra linguagem por causa do tempo).... somente em julho/2023 em diante talvez eu tenha um espaço para estudar e talz
Hoje tenho uma tela de PDV que nada mais é quem um form com varios objetos e imagens, predefinidos para o for ser 1024 x 768px.... tudo no form foi feito baseado nesse tamanho.
Porem tenho vários clientes com varias resoluções diferente... e vejo muito sistema concorrente chegando com as telas autoclaváveis (preenche toda tela).
Poderia cria um código que ajustasse o form ao tamanho da tela, porem os objetos/imagens ficaram deslocado ou distorcidos.
Existe alguma possibilidade de fazer isso em vb6 ?
O que eu faria(trabalhoso pra caramba):
- Redimensionar a tela para uma resolução qualquer
- Ajeitar os componentes
- Anotar a posição e tamanho de cada um deles em um arquivo
- Repetir a operação para cada resolução que queira suportar
Ao rodar o sistema no cliente, ler o arquivo com os tamanhos e posições, e ir aplicando essas configurações para os componentes. Claro que isso poderia ficar interno no sistema, com constantes ou coisa assim. Mas vai dar trabalho.
Outra opção é fazer 3 formulários, digamos um para resolução pequena, outra para média e outra para grande ... e colocando no frame também, assim, ao abrir, um sub iria identificar o que mais se aproxima do tamanho e chama o devido formulário ... vai haver diferenças de tamanho nas bordas, mas bem menor que no primeiro exemplo
Citação::
Fazer para várias resoluções é muito difÃÂcil... Se eu fosse fazer, colocava tudo em um frame, e ao carregar centralizava o frame... vai sobrar informações na lateral, nas bordas...mas pode preencher com uma foto tema, ou deixar vazio mesmo
Outra opção é fazer 3 formulários, digamos um para resolução pequena, outra para média e outra para grande ... e colocando no frame também, assim, ao abrir, um sub iria identificar o que mais se aproxima do tamanho e chama o devido formulário ... vai haver diferenças de tamanho nas bordas, mas bem menor que no primeiro exemplo
No C# isso seria possÃÂvel?
Quando digo ser possivel, me refiro a fazer um form padrão com objetos e imagens e ele se auto ajustar a tela mantendo as propoções de cada objeto e imagem?
Caso ele não faça isso, qual outro seria?
Obs: Aplicação desktop
coloque o arquivo .bas no seu projeto
depois em :
Private Sub Form_Load()
SaveFormPosition Me
End Sub
Private Sub Form_Resize()
Me.AutoRedraw = False
ResizeForm Me
Me.AutoRedraw = True
End Sub
Citação::
:
Fazer para várias resoluções é muito difÃÂcil... Se eu fosse fazer, colocava tudo em um frame, e ao carregar centralizava o frame... vai sobrar informações na lateral, nas bordas...mas pode preencher com uma foto tema, ou deixar vazio mesmo
Outra opção é fazer 3 formulários, digamos um para resolução pequena, outra para média e outra para grande ... e colocando no frame também, assim, ao abrir, um sub iria identificar o que mais se aproxima do tamanho e chama o devido formulário ... vai haver diferenças de tamanho nas bordas, mas bem menor que no primeiro exemplo
No C# isso seria possÃÂvel?
Quando digo ser possivel, me refiro a fazer um form padrão com objetos e imagens e ele se auto ajustar a tela mantendo as propoções de cada objeto e imagem?
Caso ele não faça isso, qual outro seria?
Obs: Aplicação desktop
Com .NET Desktop, tem os controles de layout que fazem exatamente isso. Tanto faz VB.NET ou C#.
VB6 - Ajustando um formulário de acordo com a resolução do video ( SDI )
https://www.macoratti.net/dica4.htm
Citação::
Acredito que este exemplo em VB6 em anexo te atende.
coloque o arquivo .bas no seu projeto
depois em :
Private Sub Form_Load()
SaveFormPosition Me
End Sub
Private Sub Form_Resize()
Me.AutoRedraw = False
ResizeForm Me
Me.AutoRedraw = True
End Sub
Fiz conforme...
porem quando executo ele diz que um dos objetos não suportam a propriedade ou método
ai quando debugo, ele seleciona a linha
inControl.Move lLeft, lTop, lWidth, lHeight
Testei com os PADRÕES: Line, Shape, Text, Combobox, CommandButton, Frame, Checkbox, OptionButton, HScrollBar, VScrollBar, ListBox, PictureBox, SSTab. Todos passaram sem problemas!
Tem 4 alternativas a princÃÂpio:
1) tentar substituir por outro que seja compatÃÂvel com redimensionamento;
2) tentar ignora-lo na rotina: Sub ResizeControl do módulo e observar comportamento no seu projeto como: distoções, redução de tamanho ou aumento, aceitável ou não.
Ex:
Teste para ignorar SSTab, não será redimensionado, em SSTab abaixo colocar o nome do que está apresentando problemas
If TypeOf inControl Is SSTab Then
GoTo subExit
End If
3) tentar colocar dentro de um Frame
4) testar o segundo exemplo que está no link que passei na mensagem anterior.
IncrÃÂvel e excelente Classe para redimensionamento de componentes junto ao form. Se não me engano é do PSC(Planet Source Code, não tenho certeza).
Em, SetResizeControls (código do form), voce define várias alternativas para cada componente utilizando, enPositionType.... Exemplo: enResizeWidth, enFixedRight, enFixedTop, enFixedBottom.
Observe ao arrastar o form:
List1, apenas redimensiona apenas verticalmente;
Text2, redimensiona em todos os sentidos;
ComboBox1, redimensiona apenas horizontalmente;
Form ao maximizar, todos são ajustados automaticamente de acordo com as predefinições.
A classe tem que estar inserida em seu projeto e componentes devem serem definidos um a um (alguns não são redimensionáveis).
Botões são mas às vezes é melhor ficarem como estão.
Alguns não são possÃÂveis. Mesmo assim é excelente para ser trabalhada.
Não esqueça que em seu form deve conter:
Option Explicit
Private ctrResizer As clsControlResizer
Private Sub Form_Load()
SetResizeControls
End Sub
Private Sub Form_Resize()
ctrResizer.ResizeContainedControls
End Sub