Ir para conteúdo

Arquivado

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

Rogério Orlando

minimizar/restaurar forms via código

Recommended Posts

Tenho um sistema com diversos forms, entretanto todos abrem e fecham em cima de um só, que é denominado frmFundo.

Ele serve como uma moldura para a abertura dos demais. Nenhum deles tem borda.

Minha tela principal (frmPrincipal), abre sob uma tela de fundo (frmFundo), em um botão (Minimizar), preciso minimizar os forms FrmPrincipal e frmfundo, e quando necessário quero clicar nele na taskbar e eles devem abrir, um sobre o outro, sendo que o aberto por último (frmPrincipal) tem que ser modal, não dando opção para clicarem no frmfundo, ocultando o principal.

 

Até consegui minimizar os forms, entretanto não consegui fazê-los ser restaurados.

 

Se puderem ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faelwan

 

valeu pela resposta, entretanto meu projeto foi todo construído em form individuais, ou seja, vai me dar um trabalho danado para organizá-los em um MDI.

 

 

Para minhas necessidades encontrei uma ocx chamada systray que minimiza meu aplicativo ao lado do relógio. Funciona perfeitamente bem até o momento em que desejo encerrar o aplicativo, dando um erro, em princípio junto a biblioteca vb6.

 

o erro só ocorre quando os form são compilados em um executável, pois enquanto em nível de projeto nada ocorre.

 

 

se souber qual o motivo por favor avise-me.

 

já postei algo relativo a systray.ocx.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faelwan, obrigado, entretanto jatentei o link sugerido que funciona legal, porém não encontrei nenhum código para fazer os formulários serem restaurados ao tamanho normal quando clicado nele.

 

se conhecer o caminho agradeço se postar.

 

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta...

Quando minimizar todos os forms, todos eles deverão msm ficar na barra de tarefas?

 

Att Rafael Lemes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta...

Quando minimizar todos os forms, todos eles deverão msm ficar na barra de tarefas?

 

Não, apenas o frmPrincipal, pois o frmFundo deixo-o hide. só que quando clico no frmprincipal minimizado na barra nada acontece.

 

PS: não esqueça que eles não têm borda.

 

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala rorlando... olha não sei se vai dar certo,

mas fussano aqui eu descobri uma possível solução bastante simples...

 

Pra minimizar >>>

Private Sub Minimizar()
frmprincipal.MinimizeAll
End Sub

E pra restaurar >>>

'Esse procedimento deve ser o Activate do frmPrincipal

Private Sub Form_Activate()

frmPrincipal.RestoreAll

End Sub

Bom, é isso!

Qualquer coisa posta ai http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Rafael Lemes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai cara, obrigado pelas dicas, entretanto não servem ao meu propósito.

Como disse necessido de algo que aja como com qualquer programa, ou seja, ele aparece na barra de tarefas e quando clicamos lá ele é minimizado, quando clicamos novamente ele é aberto no tamanho que estava anteriormente, seno que nem sempre ocupa a tela toda (maximizado).

 

 

mesmo assim valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala mano...

 

Seguinte, o segundo programa que eu upei nesse tópico tem exatamente a função que você quer sem precisar usar a bendita systray.ocx.

 

Da uma olhada no botão minimizar para a bandeja, vê como chama a função e depois usa isso com o Collection Forms do seu sistema.

 

Posta ai para ver se funcionou.

 

Paulo Mendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo.

 

Utilizei seus códigos conforme abaixo:

 

Public Sub MinimizeToSystray()

 

Dim oData As NOTIFYICONDATA

With oData

 

.cbSize = Len(oData)

.hIcon = Me.Icon.Handle

.hwnd = Me.hwnd

.szTip = Left(Me.Caption, 64) & Chr(0)

.uCallbackMessage = WM_MOUSEMOVE

.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE

 

End With

Shell_NotifyIcon NIM_ADD, oData

Hide

frmfundo.Hide

End Sub

 

Private Sub RestoreFromSystray(Optional ShowWindow As Boolean = True)

 

Dim oData As NOTIFYICONDATA

With oData

 

.cbSize = Len(oData)

.hwnd = Me.hwnd

 

End With

Shell_NotifyIcon NIM_DELETE, oData

 

If ShowWindow Then

frmfundo.Show

Show 1

 

End If

 

End Sub

 

Porém sõ consegui minimizar, qquando clico sobre o ícone nada acontece.

 

será que esqueci de copiar algo?

 

 

mesmo assim valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim talvez esqueceu sim...

 

Tem duas maneiras de se fazer..

 

Se quiser fazer direto, clicando no icone ele restaura simples, adiciona esse procedimento.

 

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbLeftButton Then
	Call RestoreFromSystray
End If

End Sub

Se quiser fazer aparecer um menuzinho que decide o que ele quer fazer é fácil também, adiciona isso daqui

 

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbLeftButton Then
	PopupMenu mpopup, , , , cmd_sair
End If

End Sub

Depois que adicionar isso no código cria um menu lá no Menu Editor.

 

Crie um Grupo novo com o Name: mpopup. Ta vendo onde tá escrito cmd_sair, na verdade esse é o nome do sub menu que vai ficar em negrito.

Menu que você quer que seja usado para restaurar e boa assim:

 

Private Sub cmd_restore_Click()
 Call RestoreFromSystray
End Sub

No caso criei um menu assim

 

Arquivo (name: mpopup)

...Sair (name: cmd_sair)

...Restaurar (name: cmd_restore)

 

E vai criando cara...vê se funciona.

 

Paulo Mendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei das duas formas que me ensinou, entretanto não funcionou com nenhuma.

 

Sem novidade, agradeço assim mesmo.

 

vou postar outra dúvida, se puder ajudar-me agradeço novamente.

 

Ela é relativa a um auto completar, ou seja, quero quando for teclando num campo texto, automaticamente, haja uma consulta a um banco de dados para apresentar as coincidências, para posteriormente gravar em outra tabela.

 

Obs.: Uso o Mysql 4.01.

 

 

valeu...

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.