• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

the_street_racer

Não consigo aumentar o tamanho da FORM!

17 mensagens neste tópico

Olá a todos!

Estou com um grande problema... eu tenho uma form com o tamanho da resolução do meu monitor, mas agora para eu poder colocar mais labels, tenho que aumentar-la mais (height) mas não consigo! Não dá mais! Eu até já tentei alterar com o notepad o ficheiro da form para aumentar o tamanho, torno a abrir o Visual Basic e fica na mesma a Form! Já estive a Googlar e não encontrei nada, nem neste fórum! Gostava que alguém me ajudasse a resolver este problema... B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Sinceramente não estou a perceber qual é o problema!

Tens um form e queres que ele saia do ecran para colocares mais labels ?

Então e tens defenido no form load a dimensão (Me.Height = xxx) ou ou form está maximizado ?

Explica lá um pouco melhor ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e normal isso acontecer... a nao ser que saibas como colocar um scrollbar vertical.

o que te aconselho e dividires o form em varios passos, para chegares ao que queres.

exemplo:

form com dados de clientes. vamos fazer de conta que nao cabe todos os dados do cliente num so form, maximizado.

metes assim

1 form para o nome, morada, etc depois clicas continuar e o programa muda pa outro form, mas tem os dados do anterior guardado em variaveis.

se usares os modulos, com variaveis globais, podes fazer isso bem ^^

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, o problema é que não dá para pores a janela maior do que o tamanho do teu ecra possui.. só se fizeres por codigo e depois experimentares noutro monitor com tamanho maior que o teu ecra.. talvez mas, nao sei, nunca experimentei

.. cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É que eu estou a fazer um programa tipo outlook e quero fazer isto:

streetracergy0.jpg

E eu ja estou nas 18H e não consigo por mais (queria fazer até as 23H 30)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

que componente usas ? ( ocx dll ou user control ?)

esta imagem é tirada do outlook... eu quero é fazer uma coisa parecida com esta... eu só quero é ter uma form maior (em altura (height)).. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existem componentes que já fazem isso (calendário tipo outlook) mas podes tentar fazer algo parecido.

Dá uma vista de olhos nestes exemplos:

http://vbnet.mvps.org/index.html?code/forms/scrollform.htm

http://vbnet.mvps.org/index.html?code/forms/scrollviewport.htm

Obrigadão jpaulino é uma boa alternativa para fazer o que eu quero! Obrigado. Mas se alguém souber como aumentar o tamanho da Form em Altura estejam à vontade em dizer.

Eu vou tentar esta alternativa e depois digo alguma coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Mas se alguém souber como aumentar o tamanho da Form em Altura estejam à vontade em dizer.

Simplesmente não dá!

Outra alternativa era usar um form MDI e colocar um form child. Colocavas umas scrollbars e talves funcionasse.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Simplesmente não dá!

Outra alternativa era usar um form MDI e colocar um form child. Colocavas umas scrollbars e talves funcionasse.

OK se tu o dizes eu acredito... obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá bom dia a todos!

Talvez exista uma maneira (no meu entender) de contornar essa situação.

1º -  Verificar em que resolução se encontra o teu programa ( resolução    base que não se altera)

2º - Mudar o teu programa para a resolução correcta ex: ( se a fazes o teu programa em  640x480 e em outro computador tens 600x800 ele automáticamente verifica que não se encontra na resolução correcta quando carregar em memória e muda-a para a correcta)

3º - Existe depois o problema dos teus controles dentro do formulário ficarem na mesma posição em que os deixaste na resolução de 640x480 , para isso terás que fazer via código ou ocx o reajuste á resolução em que te encontras.

4º - Por fim e último quando saires não te esqueças de restaurar a resolução inicial que neste exemplo é de 600x800

Código de Ajuda! ( depois é contigo !)

=========================

1)--» Código Ex. para mudar a resolução:

------------------------------------------------

1.1 - Fazer um novo form com os seguintes contoles :

1.1.1 - 3 Combobox e 2 Botoes.

1 - Combobox : Combo1;Combo2;Combo3

2 - Botoes : Command1; Command2

No fim de adicionares os controles adicionas no form o

Código :

----------

'Declaramos en el formulario :

Private Declare Function EnumDisplaySettings Lib "user32" Alias _

          "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _

          ByVal iModeNum As Long, lpDevMode As Any) As Boolean

  Private Declare Function ChangeDisplaySettings Lib "user32" Alias _

          "ChangeDisplaySettingsA" (lpDevMode As Any, _

          ByVal dwflags As Long) As Long

  Const CCDEVICENAME = 32

  Const CCFORMNAME = 32

  Const DM_PELSWIDTH = &H80000

  Const DM_PELSHEIGHT = &H100000

  Private Type DEVMODE

        dmDeviceName As String * CCDEVICENAME

        dmSpecVersion As Integer

        dmDriverVersion As Integer

        dmSize As Integer

        dmDriverExtra As Integer

        dmFields As Long

        dmOrientation As Integer

        dmPaperSize As Integer

        dmPaperLength As Integer

        dmPaperWidth As Integer

        dmScale As Integer

        dmCopies As Integer

        dmDefaultSource As Integer

        dmPrintQuality As Integer

        dmColor As Integer

        dmDuplex As Integer

        dmYResolution As Integer

        dmTTOption As Integer

        dmCollate As Integer

        dmFormName As String * CCFORMNAME '20

        dmUnusedPadding As Integer

        dmBitsPerPel As Integer

        dmPelsWidth As Long

        dmPelsHeight As Long

        dmDisplayFlags As Long

        dmDisplayFrequency As Long

  End Type

  Dim DevM As DEVMODE

'Y creamos la función :

Function CambiaResolucion(BitPorPixel As Integer, Ancho As Integer, Alto As Integer) As Boolean

    'Función para cambiar la resolución de la pantalla en W95

    'Parámetros :

    'BitPorPixel : Nº de bits de color

    ' 4 - 16 colores, 8 - 256 colores

    ' 16 - 65.000 colores, 32 - 16 M de colores

    'Ancho : Nº de pixels de ancho

    'Alto : Nº de pixels de alto

    Dim a&

    a = EnumDisplaySettings(0&, 0&, DevM)

    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT

    DevM.dmBitsPerPel = BitPorPixel

    DevM.dmPelsWidth = Ancho

    DevM.dmPelsHeight = Alto

    a = ChangeDisplaySettings(DevM, 0)

    If a = 0 Then

        CambiaResolucion = True

    Else

        CambiaResolucion = False

    End If

End Function

Private Sub Command1_Click()

x = CambiaResolucion(Combo1.Text, Combo2.Text, Combo3.Text)

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Combo1.AddItem "256"

Combo1.AddItem "16"

Combo1.AddItem "32"

Combo2.AddItem "640"

Combo3.AddItem "480"

Combo2.AddItem "800"

Combo3.AddItem "600"

Combo2.AddItem "1024"

Combo3.AddItem "768"

End Sub

Private Sub Form_Resize()

On Error Resume Next

Move (Screen.Width - Width) \ 29, (Screen.Height - Height) \ 29

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

=================================================

=================================================

2)--» Código Ex. para fazer o Auto ajuste de teus controles.

-----------------------------------------------------------------------

2.1 - Fazer um novo form com alguns contoles :

- » ex : Botões; caixas de texto; labels etc.

  2.2 - Adicionar um Módulo de Classe com o nome : ControlResizer

Código para o Form :

-------------------------

Option Explicit

Dim frmResize   As New ControlResizer

Private Sub Form_Load()

   

    Call frmResize.InitResizer(Me) 'initiate resize class

   

End Sub

Private Sub Form_Resize()

    Call frmResize.FormResized(Me) 'force control resize

   

End Sub

Código para o ControlResizer :

------------------------------------

Option Explicit

Private FormOldWidth        As Long 'stores the old width of the owner form

Private FormOldHeight       As Long 'stores the old height of the owner form

Private Inited              As Boolean 'detect if resizer has been initiated

Private IgnoreNextIfNotMax  As Boolean 'ignore next resize if its not a maximise command

Public Sub InitResizer(frm As Form)

'this method will set the FormOldWidth and FormOldHeight

'and show that the resizer has been initiated

'Parameters:    frm: The owner form object

'Usage:         Simply add to Form_load event eg: frmResize.InitResizer(Me)

    FormOldWidth = frm.ScaleWidth 'sets the current width of the form

    FormOldHeight = frm.ScaleHeight 'sets the current height of the form

   

    Inited = True 'will show that the resizer has been initated

   

End Sub

Public Sub FormResized(frm As Form)

'this method will resize controls accordingly

'when the form is resized

'Parameters:    frm: The owner form object

'Usage:         simply add to form_resize event eg: Call frmResize.FormResized(Me)

    On Error GoTo Err_Handle 'error handler

   

    Dim cControl        As Control 'the variable holding a control from the owner form

   

    Dim WidthChange     As Long 'change in width of the owner form

    Dim HeightChange    As Long 'change in height of the owner form

    Dim WidthPercent    As Long 'percentage width change of the owner form

    Dim HeightPercent   As Long 'percentage height change of the owner form

   

    If Inited = False Then 'detect if InitResizer has been called

        'raise error if it hasnt

        Call Err.Raise(80000, , "Initiate resize module before resizing")

        Exit Sub 'stop further execution of this method to prevent errors

    End If

   

    If frm.WindowState = vbMinimized Then 'check to see if resize is a minimisation

        IgnoreNextIfNotMax = True 'set to ignore resize if its not to a maximise command

        Exit Sub 'stop further execution of this method to prevent errors

    End If

   

    If IgnoreNextIfNotMax = True Then 'detect if set to ignore next non-max command

        IgnoreNextIfNotMax = False 'set to perform resize next time

        If frm.WindowState <> vbMaximized Then 'will cause resize to display wrongly if not maximised

            Exit Sub 'stop further execution of this method to prevent errors

        End If

    End If

   

    WidthChange = frm.ScaleWidth - FormOldWidth 'calculate width change

    HeightChange = frm.ScaleHeight - FormOldHeight 'calculate height change

   

    WidthPercent = (((frm.ScaleWidth - FormOldWidth) / FormOldWidth) * 100) 'calculate width percent change

    HeightPercent = (((frm.ScaleHeight - FormOldHeight) / FormOldHeight) * 100) 'calculate height percent change

   

    For Each cControl In frm.Controls 'iterate through each control in the owner form

       

        'change left property

        Select Case Mid$(cControl.Tag, 1, 1) 'check left mode

            Case Is = 1 'Proportional change

                'change the left of control proportionally

                cControl.Left = ((100 + WidthPercent) / 100) * cControl.Left

            Case Is = 2 'Static change

                cControl.Left = cControl.Left + WidthChange 'add change in width

            Case Is = 3 'Limited static change

                If cControl.Left + WidthChange < 0 Then 'detect if change will reduce below 0

                    cControl.Left = 0 'set left to 0

                Else

                    cControl.Left = cControl.Left + WidthChange 'add change as normal

                End If

        End Select

       

        'change top property

        Select Case Mid$(cControl.Tag, 2, 1) 'check top mode

            Case Is = 1 'Proportional change

                'change the top of control proportionally

                cControl.Top = ((100 + HeightPercent) / 100) * cControl.Top

            Case Is = 2 'Static change

                cControl.Top = cControl.Top + HeightChange 'add change in height

            Case Is = 3 'Limited static change

                If cControl.Top + HeightChange < 0 Then 'detect if change will reduce below 0

                    cControl.Top = 0 'set top to 0

                Else

                    cControl.Top = cControl.Top + HeightChange 'add change as normal

                End If

        End Select

           

        'change width property

        Select Case Mid$(cControl.Tag, 3, 1) 'check width mode

            Case Is = 1 'Proportional change

                'change the left of control proportionally

                cControl.Width = ((100 + WidthPercent) / 100) * cControl.Width

            Case Is = 2 'Static change

                cControl.Width = cControl.Width + WidthChange 'add change in width

            Case Is = 3 'Limited static change

                If cControl.Width + WidthChange < 0 Then 'detect if change will reduce below 0

                    cControl.Width = 0 'set left to 0

                Else

                    cControl.Width = cControl.Width + WidthChange 'add change as normal

                End If

        End Select

       

        'change height property

        Select Case Mid$(cControl.Tag, 4, 1) 'check height mode

            Case Is = 1 'Proportional change

                'change the height of control proportionally

                cControl.Height = ((100 + HeightPercent) / 100) * cControl.Height

            Case Is = 2 'Static change

                cControl.Height = cControl.Height + HeightChange 'add change in height

            Case Is = 3 'Limited static change

                If cControl.Height + HeightChange < 0 Then 'detect if change will reduce below 0

                    cControl.Height = 0 'set top to 0

                Else

                    cControl.Height = cControl.Height + HeightChange 'add change as normal

                End If

        End Select

       

    Next cControl 'goto next control

   

    FormOldWidth = frm.ScaleWidth 'change old width to current width

    FormOldHeight = frm.ScaleHeight 'change old height to current height

    Exit Sub

Err_Handle:

    If Err.Number = 438 Then '"object doesn't support this property or method" will occur on controls like timers

        Err.Clear 'clear error

        Resume Next 'ignore line with error and continue

    ElseIf Err.Number = 11 Then '"division by zero" will occur after restoring from minimize

        Err.Clear 'clear error

        Resume Next 'ignore line with error and continue

    Else

        'show error box

        MsgBox "Error " & Err.Number & vbCrLf & Err.Description, vbExclamation + vbOKOnly

    End If

   

End Sub

Espero ter-te ajudado.

Cumps.

Programadorvb6.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

programadorvb6,

O que percebi não tem nada a ver com isso!

O que se pretende é criar algo do tipo webcontrol ou sub-forms do access em que existem controlos que não estão visíveis e que com o auxilio de uma scroll bar se tornam visíveis. É tornar o form "maior".

O que estás a aprentar é uma classe de reposicionamento e autodimencionamento dos controlos e até conheco algumas um pouco mais simples de implementar (penso eu!). Eu uso este http://www.codeguru.com/vb/controls/vb_activex/article.php/c3503/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim tens razão , não li o final do que ele apresentou, sou da mesma opiniao, talvez seja melhor usa uma scroolbar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1º - Cria um form

2 º - Põe varias textbox na vertical por ai a baixo.

3 º - Põe uma scroolbar no topo do teu lado direito

4º - reduz o form , mas que vejas algumas textbox e que tenhas acesso á scroollbar para veres o efeito.

código form.

---------------

Option Explicit

Dim oldPos As Integer


Private Sub Form_Load()
Dim iFullFormHeigth As Integer
Dim iDisplayHeight  As Integer

iFullFormHeigth = 3765
iDisplayHeight = 1800

Me.Height = iDisplayHeight

With VScroll1
    .Height = Me.ScaleHeight
    .Min = 0
    .Max = iFullFormHeigth - iDisplayHeight
    .SmallChange = Screen.TwipsPerPixelY * 10
    .LargeChange = .SmallChange
End With
End Sub


Private Sub pScrollForm()
Dim ctl As Control

For Each ctl In Me.Controls
    If Not (TypeOf ctl Is VScrollBar) And _
        Not (TypeOf ctl Is CommandButton) Then
        ctl.Top = ctl.Top + oldPos - VScroll1.Value
    End If
Next

oldPos = VScroll1.Value
End Sub

Private Sub VScroll1_Change()
    Call pScrollForm
End Sub


Private Sub VScroll1_Scroll()
    Call pScrollForm
End Sub

cumps.

programadorvb6

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos pela informação, que deram! programadorvb6 era mesmo isto, e de uma maneira simplificada! :biggrin:

Eu depois vou dando noticias do meu projecto que irei por em circulação na Net através do site que eu irei criar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora