Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TaP

[Resolvido] Redimensionamento

Recommended Posts

Bom dia,Galera eu tenho um form feito para tela 1024x768. Só que um dos usuários precisa usar 800x600, ou seja, boa parte da tela não fica visivel.Eu queria saber se tem como colocar algum comando que faça com que o form se redimensione conforme a configuração de tela do usuário.Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aê Tap, belê ???Quando você for desenvolver aplicativos que deverão ser redimensionados em tempo de execução, deverá levar em conta o seguinte:Desenhe o formulário na menor resolução de video ( o redimensionamento para resoluções maiores é melhor) Utilize fontes TruType que são escaláveis Use fontes que estarão disponíveis no sistema do usuário Desenhe os controles um pouco maior do que o necessário e deixe um espaço maior entre eles. O redimensionamento nem sempre é exato. CheckBoxes e Option buttons não são redimensionáveis; e alguns controles precisarão de um tratamento especial: Ex: A propriedade Height das caixas de combinação ( combobox ) é somente leitura em tempo de execução para redimensioná-las deveremos aumentar o tamanho das fontes usadas neste controle. Agora o projeto passo a passo:Trabalhe com a resolução de video 800x600. Inicie um novo projeto no VB No formulário padrão , form1 , inclua um botão de comando ( commandButton) , uma etiqueta ( Label ) e mais alguns controles a sua escolha. Insira o seguinte código no formulário:Option Explicit Dim MyForm As FRMSIZE Dim DesignX As Integer Dim DesignY As Integer----------------------------------------------------------------------------------Private Sub Command2_Click() Unload MeEnd Sub---------------------------------------------------------------------------------- Private Sub Form_Load() Dim ScaleFactorX As Single, ScaleFactorY As Single ' fatores da escala ' Tamanho do formulario em Pixels na resolução de trabalho DesignX = 800 DesignY = 600 RePosForm = True DoResize = False ' define os valores da tela Xtwips = Screen.TwipsPerPixelX Ytwips = Screen.TwipsPerPixelY Ypixels = Screen.Height / Ytwips Xpixels = Screen.Width / Xtwips ' Determina os valores da escala ScaleFactorX = (Xpixels / DesignX) ScaleFactorY = (Ypixels / DesignY) ScaleMode = 1 ' twips Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me Label1.Caption = "Resolução Atual " & Str$(Xpixels) + _ " por " + Str$(Ypixels) MyForm.Height = Me.Height ' Lembra o tamanho atual MyForm.Width = Me.Width End Sub--------------------------------------------------------------------------------- Private Sub Form_Resize() Dim ScaleFactorX As Single, ScaleFactorY As Single If Not DoResize Then ' Para evitar um loop sem fim DoResize = True Exit Sub End If RePosForm = False ScaleFactorX = Me.Width / MyForm.Width ' Quanto mudar ? ScaleFactorY = Me.Height / MyForm.Height Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me MyForm.Height = Me.Height ' Lembra o tamanho atual MyForm.Width = Me.Width End Sub--------------------------------------------------------------------------------- Private Sub Command1_Click() Dim ScaleFactorX As Single, ScaleFactorY As Single DesignX = Xpixels DesignY = Ypixels RePosForm = True DoResize = False ' define os valores da tela Xtwips = Screen.TwipsPerPixelX Ytwips = Screen.TwipsPerPixelY Ypixels = Screen.Height / Ytwips ' Resolução do Pixel Y Xpixels = Screen.Width / Xtwips ' Resolução do Pixel X ' determina os fatores da escala ScaleFactorX = (Xpixels / DesignX) ScaleFactorY = (Ypixels / DesignY) Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me Label1.Caption = "Resolução Atual -> " & Str$(Xpixels) + _ " por " + Str$(Ypixels) MyForm.Height = Me.Height ' Lembra o tamanho atual MyForm.Width = Me.Width End Sub Insira um modulo no projeto e inclua o seguinte código no módulo:Public Xtwips As Integer, Ytwips As IntegerPublic Xpixels As Integer, Ypixels As Integer Type FRMSIZE Height As Long Width As Long End Type Public RePosForm As Boolean Public DoResize As Boolean------------------------------------------------------------------------------------------- Sub Resize_For_Resolution(ByVal SFX As Single, _ ByVal SFY As Single, MyForm As Form) Dim I As Integer Dim SFFont As Single SFFont = (SFX + SFY) / 2 ' escala média ' Tamanho dos controles para a nova resolução On Error Resume Next ' With MyForm For I = 0 To .Count - 1 If TypeOf .Controls(I) Is ComboBox Then 'Combobox não altera a propriedade Height .Controls(I).Left = .Controls(I).Left * SFX .Controls(I).Top = .Controls(I).Top * SFY .Controls(I).Width = .Controls(I).Width * SFX Else .Controls(I).Move .Controls(I).Left * SFX, _ .Controls(I).Top * SFY, _ .Controls(I).Width * SFX, _ .Controls(I).Height * SFY End If ' Redimensiona e reposiciona antes de alterar o tamanho da fonte .Controls(I).FontSize = .Controls(I).FontSize * SFFont Next I If RePosForm Then ' Redimensiona o formulario .Move .Left * SFX, .Top * SFY, .Width * SFX, .Height * SFY End If End With End Sub Agora teste o projeto. Execute-o em diferente resoluções de video e veja que o formulário se ajusta para ocupar a mesma posição e aparencia no desktop. Perceba que o redimensionamento é melhor quando mudamos para uma resolução maior. Se mudar a resolução quando o formulário estiver aberto clique no botão de comando para que o ajuste seja feito.Tudo isto vale somente para a interface SDI.A interface MDI requer outro tratamento.Um grande Abraço,ptalassi@terra.com.brPaulo TalassiDesenvolvimento de ProgramasVisual Basic / ASP/ SQL - Server

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, fiz os passos para o redimencionamento e funcionou perfeitamente porêm para montar o layout do formulario eu tenho que fazer ele deslocado para que quando coloco para rodar ele fique centralizado. testei isso para varias configurações de video. dá para eu arrumar isso? criar o layout da pagina como eu realmente a vejo ao invés de cria-la deslocada colocando os controles por tentativas.

 

mkbyte@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.