AJUSTE DE CONTROLES NA TELA
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
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
Pessoal alguém já passou por esse problema?
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
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
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
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
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
Uma dica, no Vb6 use como padrão para desenhar suas telas a resolução 1024 x 768
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
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
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
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
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
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
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
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
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
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