FORM E OBJETO AUTOAJUSTÁVEIS NA RESOLUÇÃO

AMELINHACODE 25/10/2022 13:36:34
#500646
Boa tarde pessoal,
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 ?
KERPLUNK 25/10/2022 23:05:49
#500650
No VB6, isso é bem difícil de fazer, mas não impossível. Infelizmente, não tem uma receitinha pronta não, depende muito de como seu form está feito e que componentes usa.
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.
LEAO10 26/10/2022 01:29:17
#500652
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
AMELINHACODE 26/10/2022 11:20:04
#500653
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
JOSE 26/10/2022 13:02:27
#500654
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
KERPLUNK 26/10/2022 19:23:39
#500657
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#.
JOSE 26/10/2022 20:21:09
#500659
Testei esse em vb6, passou sem problemas:

VB6 - Ajustando um formulário de acordo com a resolução do video ( SDI )

https://www.macoratti.net/dica4.htm
EPISCOPAL 27/10/2022 11:48:54
#500663
Estou criando um pacote de controles que faz exatamente o que Jose postou ..... mas ainda não está finalizado ..... falta depurar algumas coisas ..... quando terminar eu posto no site.
AMELINHACODE 28/10/2022 00:21:24
#500667
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

JOSE 28/10/2022 09:12:49
#500668
Não sei a qual objeto voce se refere para poder simular aqui.

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.

JOSE 29/10/2022 09:31:28
#500669
Mais uma altenativa para checar redimensionamentos veja o arquivo em anexo!

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
Página 1 de 2 [13 registro(s)]
Faça seu login para responder