MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Redimencionar Form automaticamenter.

    Compartilhe

    renatojmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 53
    Registrado : 16/11/2012

    Redimencionar Form automaticamenter.

    Mensagem  renatojmaia em Qua 04 Jun 2014, 13:12

    Estou com dificuldade no meu projeto quanto ao redimensionamento dos form de acordo com a resolução do micros.
    andei pesquisando encontrei um artigo no suporte do windows:
    "Como criar um formulário independente de resolução"
    forneceram os seguintes código para form:
    Código:
    Option Compare Database
    Option Explicit
          Dim MyForm As FRMSIZE
          Dim DesignX As Integer
          Dim DesignY As Integer

    Private Sub Form_Load()
          Dim ScaleFactorX As Single, ScaleFactorY As Single  ' Scaling factors
          ' Size of Form in Pixels at design resolution
          DesignX = 800
          DesignY = 600
          RePosForm = True   ' Flag for positioning Form
          DoResize = False   ' Flag for Resize Event
          ' Set up the screen values
          Xtwips = Screen.TwipsPerPixelX
          Ytwips = Screen.TwipsPerPixelY
          Ypixels = Screen.Height / Ytwips ' Y Pixel Resolution
          Xpixels = Screen.Width / Xtwips  ' X Pixel Resolution

          ' Determine scaling factors
          ScaleFactorX = (Xpixels / DesignX)
          ScaleFactorY = (Ypixels / DesignY)
          ScaleMode = 1  ' twips
          'Exit Sub  ' uncomment to see how Form1 looks without resizing
          Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
          Label1.Caption = "Current resolution is " & Str$(Xpixels) + _
           "  by " + Str$(Ypixels)
          MyForm.Height = Me.Height ' Remember the current size
          MyForm.Width = Me.Width
    End Sub

    Private Sub Form_Resize()
          Dim ScaleFactorX As Single, ScaleFactorY As Single

          If Not DoResize Then  ' To avoid infinite loop
             DoResize = True
             Exit Sub
          End If

          RePosForm = False
          ScaleFactorX = Me.Width / MyForm.Width   ' How much change?
          ScaleFactorY = Me.Height / MyForm.Height
          Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
          MyForm.Height = Me.Height ' Remember the current size
          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
          ' Set up the screen values
          Xtwips = Screen.TwipsPerPixelX
          Ytwips = Screen.TwipsPerPixelY
          Ypixels = Screen.Height / Ytwips ' Y Pixel Resolution
          Xpixels = Screen.Width / Xtwips  ' X Pixel Resolution

          ' Determine scaling factors
          ScaleFactorX = (Xpixels / DesignX)
          ScaleFactorY = (Ypixels / DesignY)
          Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
          Label1.Caption = "Current resolution is " & Str$(Xpixels) + _
           "  by " + Str$(Ypixels)
          MyForm.Height = Me.Height ' Remember the current size
          MyForm.Width = Me.Width
    End Sub
    e este para um modulo no projeto:
    Código:
    Public Xtwips As Integer, Ytwips As Integer
          Public 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  ' average scale
          ' Size the Controls for the new resolution
          On Error Resume Next  ' for read-only or nonexistent properties
          With MyForm
            For I = 0 To .Count - 1
             If TypeOf .Controls(I) Is ComboBox Then   ' cannot change 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
               ' Be sure to resize and reposition before changing the FontSize
               .Controls(I).FontSize = .Controls(I).FontSize * SFFont
            Next I
            If RePosForm Then
              ' Now size the Form
              .Move .Left * SFX, .Top * SFY, .Width * SFX, .Height * SFY
            End If
          End With
          End Sub
    estes cógigos me retorna o seguinte erro:

    [Você precisa estar registrado e conectado para ver esta imagem.]" />

    as linhas são:
         Xtwips = Screen.TwipsPerPixelX
         Ytwips = Screen.TwipsPerPixelY
    e

         ScaleFactorY = Me.Height / MyForm.Height

    como faço para solucionar tal erro?


    Última edição por renatojmaia em Qua 04 Jun 2014, 13:19, editado 2 vez(es) (Razão : alterar texto)

    renatojmaia
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 53
    Registrado : 16/11/2012

    Re: Redimencionar Form automaticamenter.

    Mensagem  renatojmaia em Qua 04 Jun 2014, 16:55

    Arquivo BD de teste.
    Anexos
    testeform.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (42 Kb) Baixado 12 vez(es)

      Data/hora atual: Dom 04 Dez 2016, 01:56