AJUSTE DE CONTROLES NA TELA

ALVAROVB2009 10/10/2016 23:04:39
#467989
Galera tenho um sistema onde minha tela foi projetada para um monitor widescreen 1280/720

Meu cliente tem um monitor quadrado 1024/768 e já tentei diversos projetos daqui do vbmania, eu mesmo já tinha uma ocx autoresize, ja tentei um controle do Macoratti, enfim tentei muitas coisas, porém o resultado é o mesmo
Só que eu não quero ter que redesenhar o formulário no tamanho de 1024,a não ser que não tenha jeito , pois o cliente esta querendo comprar um monitor de 21[ô] ou maior,. então a idéia era fazer a tela se ajustar automaticamente

Alguém já passou por isso e se sim, como resolver esse problema da melhor forma possível?

Agradeço a todos
ALVAROVB2009 11/10/2016 22:35:36
#468009
Pessoal alguém já passou por esse problema?
PLUGSOFTSM 14/10/2016 22:04:40
#468095
Resposta escolhida
Na época que eu programava com vb6 eu tive esse problema.... eu resolvi da seguinte maneira
Desenhei a tela numa resolução padrão (altura e largura)
No evento resize do form eu pegara a largura e a altura do form e e encontrava um fator

tipo assim
Dim FX as single
Dim Fy as single

FX = [Largura do form]/[Largura Padrão]
FY = [Altura do form]/[Altura Padrão]

A partir daí eu percorria todos os controle do form e aplicava o fator FX e FY para reposicionar e redimensionar cada componente
Sempre funcionava direitinho, independente do tamanho do monitor ou da resolução do mesmo

Se achar complicado, posso postar o código pra vc, uma vez que nem uso mais e, já faz tempo que abandonei o vb6
JOHNSTEVE 14/10/2016 23:15:08
#468096
Citação:

:
Na época que eu programava com vb6 eu tive esse problema.... eu resolvi da seguinte maneira
Desenhei a tela numa resolução padrão (altura e largura)
No evento resize do form eu pegara a largura e a altura do form e e encontrava um fator

tipo assim
Dim FX as single
Dim Fy as single

FX = [Largura do form]/[Largura Padrão]
FY = [Altura do form]/[Altura Padrão]

A partir daí eu percorria todos os controle do form e aplicava o fator FX e FY para reposicionar e redimensionar cada componente
Sempre funcionava direitinho, independente do tamanho do monitor ou da resolução do mesmo

Se achar complicado, posso postar o código pra vc, uma vez que nem uso mais e, já faz tempo que abandonei o vb6



[PLUGSOFTSM]

poste o codigo por favor,
eu preciso em VB.net .1280/800



essa semana consegui mais um cliente. q tem um monitor sansung. maior q a largura.. tipo. a altura é maior q a largura. e a resolução é
[txt-color=#e80000] 1024/768 [/txt-color]

e meu sistema eu fiz em resolução
ALVAROVB2009 15/10/2016 18:43:50
#468104
PLUGSOFTSM obrigado pelo retorno

PLUGSOFTSM, o que eu não queria era realmente ter que limitar a tela de desenvolvimento , pois gostaria de poder ajustar na minha tela de desenvolvimento 1280/720 e de alguma forma o formulário já se ajustar, eu até tinha em mente que teria que limitar a minha área de trabalho, más realmente tinha esperança de não precisar, más como vi que vc resolveu o seu problema limitando a tela, então não terei como fugir

Já a parte de código, eu tenho 2 projetos que peguei não só aqui no fórum más na net também e um deles é que acho vou até usar, que é a autorisize.ocx, que com a tela limitada acredito que não terei o problema de cortar os componentes no momento que abre a tela maximizada e/ou em outra resolução e o outro projeto é uma classe que faz exatamente o que a sua idéia propõe, e altera todos os componentes do formulário

Agora minha pergunta é, qual foi a sua resolução padrão , pois a resolução que esta se trabalhando agora é da tela widescreen 1280/720, porém ainda tem muitas tela com a resolução 1024/768 que é o grande problema, que não é de monitor widescreen
Se vc puder postar também o código e/ou um projeto teste agradeço, pois quanto mais informações melhor
ANDPAG 17/10/2016 00:50:48
#468123
Uma dica, no Vb6 use como padrão para desenhar suas telas a resolução 1024 x 768
ALVAROVB2009 17/10/2016 09:09:57
#468124
ANDPAG obrigado pelo retorno
Eu já tinha pensando nisso, más não gostaria de ter esse limite,pois com os monitores widescreen podemos usar um espaço maior e melhor, por isso que coloquei esse tópico para ver se tinha alguma forma de fugir disso, más pelo visto não tem como
PLUGSOFTSM 17/10/2016 12:31:01
#468134
ALVAROVB2009

To sem tempo agora... Mas a noite vou te postar um exemplo aqui, que ao redimensionar a tela, seja pela resolução, tamanho do monitor etc... redesenha e reposiciona os componentes automaticamente mantendo a sua tela sempre com a esma aparência...
Só me diz se vc precisa isso em vb6 ou vbnet

Acho que vc não entendeu o que eu quis te falar outro dia
A noite vou postar com certeza... funciona bem legal


ALVAROVB2009 17/10/2016 12:35:08
#468135
Blz, vlw
Se vc puder colocar os 2 tipos, vb6 e vb.net agradeço, porque tenho 1 projeto em vb.net e sei que irei ter o mesmo problema
PLUGSOFTSM 25/10/2016 00:31:14
#468379
Conforme havia prometido, estou colocando um exemplo simples de como fazer os controles de um formulário se redimensionarem automaticamente quando mudar a resolução ou o tamanho da tela.
Conheço pelo menos mais uns 3 modos de fazer isso.
Recomendo explorar a propriedade [txt-color=#0000f0]Anchor [/txt-color]dos contoles. Talvez elas ajudem a resolver a necessidade;

Para quem precisar do código fonte aí vai:

[ô]Resize é o nome que dei ao Form
Public Class Resize
Private S As Size

Private Sub Resize_Load(sender As Object, e As EventArgs) Handles MyBase.Load
S = Me.Size [ô]Pego as medidas fo funcionário
Grid1.Rows.Add(50)
For Each C As Control In Me.Controls
[ô]Armazeno a posição inicial e as medidas de cada controle
C.Tag = C.Width & [Ô]|[Ô] & C.Height & [Ô]|[Ô] & C.Left & [Ô]|[Ô] & C.Top
Next
End Sub

Private Sub Text2_LocationChanged(sender As Object, e As EventArgs) Handles Text1.LocationChanged, Text2.LocationChanged, Combo1.LocationChanged
[ô]Esta parte coloquei para posicionar os label do título do controle sempre próximo ao seu componente
Select Case sender.name
Case [Ô]Text1[Ô] : Label2.Location = New Point(sender.left, sender.top - Label2.Height)
Case [Ô]Text2[Ô] : Label3.Location = New Point(sender.left, sender.top - Label3.Height)
Case [Ô]Combo1[Ô] : Label1.Location = New Point(sender.left, sender.top - Label1.Height)
End Select

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
End
End Sub

Private Sub Resize_Resize(sender As Object, e As EventArgs) Handles Me.Resize
[ô]Calculo os fatores de escala na vertical e na horizontal para aplicar as controles da tela
Dim Fx As Single = Me.Width / S.Width
Dim Fy As Single = Me.Height / S.Height
For Each C As Control In Me.Controls
If Not TypeOf C Is Label Then
[ô]Ignoro os label pois eles são reposicionados no LocationChanged
Dim P As String() = C.Tag.ToString.Split([Ô]|[Ô])
C.Width = Val(P(0)) * Fx
C.Height = Val(P(1)) * Fy
C.Left = Val(P(2)) * Fx
C.Top = Val(P(3)) * Fy
End If
Next
End Sub
End Class

Se precisar de ajuda ou não entender algo ou ainda necessitar mudar o código. Só pedir
ALVAROVB2009 04/08/2017 09:14:35
#475612
PLUGSOFTSM Agradeço a ajuda, vi hj o tópico que vc tinha me ajuda, más não peguei na época porque tive um problema de pagamento do cliente e tive que cancelar o meu projeto, mesmo conversando bastante com ele
Más agradeço a sua disposição em me ajudar e esse código será muito útil para mim, pois tenho uns projetos que usam a disposição inteira da tela e tenho o sistema em monitores diferentes

Com esse código já tomarei como base e com isso farei as modificações necessárias

Mais uma vez agradeço a ajuda
Tópico encerrado , respostas não são mais permitidas