Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Botao Maximizar e Minimizar

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Rafael Almeida
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Seg Jan 03, 2011 2:24 pm

Botao Maximizar e Minimizar

Mensagem por Rafael Almeida »

Boa tarde,

Tenho um form e não estou conseguindo incluir os botões de maximizar e minimizar. Alguem poderia me ajudar?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Botao Maximizar e Minimizar

Mensagem por Guima »

Olá Rafael,

Há um tempo atrás quis fazer a mesma coisa com meu formulário e encontrei este exemplo na net, não me recordo onde. Um problema que percebi é que os outros controles não crescem na mesma proporção que o formulário, mas para minimizar é ótimo. Veja se te ajuda.

[REMOVIDO]

Abraços


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: Botao Maximizar e Minimizar

Mensagem por Mauro Coutinho »

Rafael, emos alguns exemplos no Forum, de uma olhada no tópico abaixo e tambem no Forum dicas que tem um exemplo que o rodrigo postou com varios forms.

viewtopic.php?f=6&t=615

Este que o Guima postou é muito bom tambem.

Segue mais um exemplo : Creditos do Fabio M. dos Santos :
Anexos
userform_expert.zip
Botões Maximizar / Minimizar / Fechar Userform
(35.61 KiB) Baixado 2420 vezes


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: Botao Maximizar e Minimizar

Mensagem por joseA »

Rafael Almeida escreveu:...Tenho um form e não estou conseguindo incluir os botões de maximizar e minimizar...
No ambiente VBA do Form, insira:

Código: Selecionar todos

Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long


Private Declare Function IniciaJanela Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function MoveJanela Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long

Private Declare Function ExibirÍcone Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
LParam As Any) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long

'// Estilo Janela
Private Const WS_CAPTION = &HC00000
Private Const WS_BARRA_TAREFAS = &H40000 '// Barra de tarefas
Private Const WS_MENU As Long = &H80000 '// Menu
Private Const WS_CX_MINIMIZAR As Long = &H20000 '// Botão maximizar
Private Const WS_CX_MAXIMIZAR As Long = &H10000 '// Botão minimizar
Private Const WS_POPUP As Long = &H80000000

'// Estado da janela
Private Const SW_EXIBIR_NORMAL = 1
Private Const SW_EXIBIR_MINIMIZADO = 2
Private Const SW_EXIBIR_MAXIMIZADO = 3

Private Const ESTILO_PROLONGADO = (-20) '// Estilo prolongado
Private Const ESTILO_ATUAL As Long = (-16) '// Um novo estilo de janela

'// Contante do Ícone
Private Const FOCO_ICONE = &H80
Private Const ICONE = 0&

Private Sub UserForm_Activate()

Form_Personalizado = FindWindowA(vbNullString, Me.Caption)
ESTILO = IniciaJanela(Form_Personalizado, ESTILO_ATUAL)
ESTILO = ESTILO Or WS_CX_MAXIMIZAR
ESTILO = ESTILO Or WS_POPUP '
ESTILO = ESTILO Or WS_CAPTION
MoveJanela Form_Personalizado, ESTILO_ATUAL, (ESTILO)
ESTILO = IniciaJanela(Form_Personalizado, ESTILO_PROLONGADO)
ESTILO = ESTILO Or WS_BARRA_TAREFAS
MoveJanela Form_Personalizado, ESTILO_PROLONGADO, ESTILO
DrawMenuBar Form_Personalizado
SetFocus Form_Personalizado

ShowWindow Form_Personalizado, SW_EXIBIR_MAXIMIZADO

'If GetScreenResolution = "800x600" Then
'Me.Zoom = 100
'Else
'Me.Zoom = 130
'End If
End Sub
Guima escreveu:... Um problema que percebi é que os outros controles não crescem na mesma proporção que o formulário..
Com evento Resise vc pode obter o tamanho do userform, daí é só relacionar com o zoom.

Código: Selecionar todos

Private Sub UserForm_Resize() 
MsgBox Me.Height 
End Sub 
Aqui ficou assim:

Código: Selecionar todos

 Private Sub UserForm_Resize()
If Me.Height < 429 Then
Me.Zoom = 100
Else
Me.Zoom = 130
End If
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Botao Maximizar e Minimizar

Mensagem por Guima »

Olá Mauro, Olá Josér Fera !!!

Um ano novo melhor a cada dia pra vcs. Não faltará exemplos para o Rafael, que ótimo !!!

Com evento Resise vc pode obter o tamanho do userform, daí é só relacionar com o zoom.
Fico feliz por sua dica José, mas mesmo utilizando o evento resize, alguns botões, frames e labels não aparecem no formulário quando minimizo. Isso que me fez desistir de utilizar essa API. Caso haja alguma solução para isso vou ficar imensamente feliz....rsrs :D

Abração pra todos


renank27
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Sáb Jul 16, 2016 8:16 pm

Re: Botao Maximizar e Minimizar

Mensagem por renank27 »

Galera, boa noite!

Será que poderiam me ajudar?

Inseri o código abaixo para ter o botão minimizar e tá dando erro dizendo que preciso atualizar para 64-bits..


Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long


Private Declare Function IniciaJanela Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function MoveJanela Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long

Private Declare Function ExibirÍcone Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
LParam As Any) As Long

Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long

'// Estilo Janela
Private Const WS_CAPTION = &HC00000
Private Const WS_BARRA_TAREFAS = &H40000 '// Barra de tarefas
Private Const WS_MENU As Long = &H80000 '// Menu
Private Const WS_CX_MINIMIZAR As Long = &H20000 '// Botão maximizar
Private Const WS_CX_MAXIMIZAR As Long = &H10000 '// Botão minimizar
Private Const WS_POPUP As Long = &H80000000

'// Estado da janela
Private Const SW_EXIBIR_NORMAL = 1
Private Const SW_EXIBIR_MINIMIZADO = 2
Private Const SW_EXIBIR_MAXIMIZADO = 3

Private Const ESTILO_PROLONGADO = (-20) '// Estilo prolongado
Private Const ESTILO_ATUAL As Long = (-16) '// Um novo estilo de janela

'// Contante do Ícone
Private Const FOCO_ICONE = &H80
Private Const ICONE = 0&

Private Sub UserForm_Activate()

Form_Personalizado = FindWindowA(vbNullString, Me.Caption)
ESTILO = IniciaJanela(Form_Personalizado, ESTILO_ATUAL)
ESTILO = ESTILO Or WS_CX_MAXIMIZAR
ESTILO = ESTILO Or WS_POPUP '
ESTILO = ESTILO Or WS_CAPTION
MoveJanela Form_Personalizado, ESTILO_ATUAL, (ESTILO)
ESTILO = IniciaJanela(Form_Personalizado, ESTILO_PROLONGADO)
ESTILO = ESTILO Or WS_BARRA_TAREFAS
MoveJanela Form_Personalizado, ESTILO_PROLONGADO, ESTILO
DrawMenuBar Form_Personalizado
SetFocus Form_Personalizado

ShowWindow Form_Personalizado, SW_EXIBIR_MAXIMIZADO

'If GetScreenResolution = "800x600" Then
'Me.Zoom = 100
'Else
'Me.Zoom = 130
'End If
End Sub


Tamara
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Seg Jul 11, 2016 5:18 pm
Contato:

Re: Botao Maximizar e Minimizar

Mensagem por Tamara »

Coloque PtrSafe.

EX: Private Declare PtrSafe Function


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Botao Maximizar e Minimizar

Mensagem por Mikel Silveira Fraga »

Renan, bom dia e seja bem vindo ao fórum.

Os acertos para correção deste problema é bem parecido com o informado pela Tamara no post acima. Porém, para um melhor esclarecimento da dessa alteração, separei alguns links que pode lhe ajudar:
- Compatibilidade entre as versões de 32 bits e 64 bits do Office
- VBA Tips - Compatibilidade entre as API 32-Bits (x86) e 64-Bits (x64) no VBA

Dê uma lida e veja se lhe esclarece melhor a mudança.

Abraços e excelente semana a todos.


luizleite
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Out 16, 2018 2:10 pm

Re: Botao Maximizar e Minimizar

Mensagem por luizleite »

boa tarde.
Vi um comentário do Guima sobre adicionar o botão maximizar e minimizar no forum.
adicionei os botões, porém, o formulário não cresce quando aperto o maximizar, não ficando legal visualmente.Quando uso o botão RESTAURAR ACIMA ao invés de maximizar, o form fica no tamanho normal.
É possível incluir no form apenas o botão RESTAURAR ACIMA e MINIMIZAR, e deixar o MAXIMIZAR desativado?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder