USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Formulario Modal
Vaughyman
RIO DE JANEIRO
RJ - BRASIL
Postada em 22/01/2005 09:29 hs            
Prezados colaboradores,
sei que essse tipo de tópico já foi discutido aqui por diversas vezes. Porém com o passar do tempo, creio eu, soluções foram encontradas e tenho a esperança de alguém possuí-la.
Vamos ao problema:
Possuo uma aplicação com 1 MDI form e alguns Forms que são Child do MDI.
Preciso que de um formulário child do MDI eu chame um outro form que TAMBÉM seja child do MDI e esse último permaneça na frente de todos como um form modal.
Acontece que já testei as dicas daqui e as mesmas só funcionam quando o form NÃO é child de um MDI. Se colocá-lo sem ser child do MDI, o mesmo estará modal para todas as aplicações fora de meu projeto onde isso não é meu objetivo.
Como então resolver tal impasse???
 
Abraços
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 22/01/2005 16:39 hs            
Tem uma API que faz isso, com o MDIChild, da forma q vc quer... nao sei o link, mas procura na sessão de dicas, em Forms/MDI que vc acha... se nao me engano, no titulo diz algo como "MDIChild moda"... da uma procurada... eu usei ela ha algum tempo, garanto que funciona...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 22/01/2005 18:08 hs            
Olá Vaughyman e Elieser, olha existem 2 jeitos uma mais eficiente q o outro mas sem usar API.
O primeiro é muito simples, ao chamar o seu form child q será modal vc coloca apenas uma linha no evento Deactivate:
 
Private Sub Form_Deactivate()
Me.ZOrder 0
End Sub
 
Apenas isso. Vc não poderá acessar os outros forms child (somente forms child, forms q não são child poderão ser acessados normalmente) só q tem um defeito, o usuário poderá mover, redimensionar (se for caso) e fechar qualquer outro form.
 
O outro modo é vc criar 2 Sub's e colocar no Módulo:
 
Sub MoverFrm(nomeFrm As String)
Dim frm As Form
For Each frm In Forms
If frm.Name <> nomeFrm And frm.Name <> MDIForm1.Name Then frm.Enabled = True
Next frm
End Sub

Sub NaoMoverFrm(nomeFrm As String)
Dim frm As Form
For Each frm In Forms
If frm.Name <> nomeFrm And frm.Name <> MDIForm1.Name Then frm.Enabled = False
Next frm
End Sub
 
No evento Load do form child q será modal coloque assim:
 
Private Sub Form_Load()
NaoMoverFrm (Me.Name)
End Sub
 
e para q os outros forms fiquem habilitados novamente coloque assim no evento unload do form child modal:
 
Private Sub Form_Unload(Cancel As Integer)
MoverFrm (Me.Name)
End Sub
 
Esta última opção é bem eficiente e fica praticamente igual a um form modal onde os outros forms, com exceção ao MDIForm, fica desabilitados e só poderão ser acessados novamente depois q o form child modal for fechado.
 
Elieser, infelizmente não encontrei dicas aqui q fazem um form child parecer modal, encontrei algumas q falam em on top mas não do tipo modal, se puder coloque aqui depois por favor, obrigado!Emoções
 
espero q ajude de alguma forma
 
t+
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 23/01/2005 01:18 hs            
Ghost
 
Estive procurando e realmente nao encontrei aqui no VBWeb a dica, devo ter pego em outro site e achei que foi aqui... vou procurar ela e depois posto...
 
Qto ao codigo, nao tenho mais ele... usei em um projeto, mas nem lembro qual... acho que nao vale a pena procurar um por um... vou procurar a dica na net, e hora que achar, posto...
 
Qto aos seus metodos, gostei muito do segundo... nao testei ainda, mas vou testar... mas gostaria de fazer uma pergunta já: Ele fica modal só sobre o Ower dele??? tipo tenho dois cadastros abertos (ambos MDIChild), um de clientes e um de produtos, ai abro a pesquisa de clientes, que é um MDIChild tambem. Tem como ele ficar modal só sobre o Cadastro de clientes, mas permitir acesso ao cadastro de produtos sem fechar???
Se tiver como, da uma dica, pq isso eu ainda nao consegui fazer... a API tb nao faz isso...
 
______________________________________
Vaughyman,
 
Tenta usar esse codigo q o ghost passou... nao testei, mas acho que vai funcionar... e fica mais rapido dentro da aplicacao que via api...
 
 
Abraços a todos...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 28/01/2005 16:34 hs            
Tem jeito de fazer modal só sobre o formulário q chamou o MDIChild Modal sim Elieser.
Mude a procedure q fiz deste jeito:
 
Sub NaoMoverFrm(nomeFrm As String, Optional frmNoMove As String)
Dim frm As Form
For Each frm In Forms
If frm.Name <> nomeFrm And frm.Name <> MDIForm1.Name Then frm.Enabled = False
Next frm
For Each frm In Forms
If frmNoMove = frm.Name Then
 MoverFrm (nomeFrm)
 frm.Enabled = False
End If
Next
End Sub
 
Por exemplo vc chama o MDIChild Modal no seu Form Clientes certo?
Então coloque assim em um botão do seu form clientes:
 
Private Sub Command1_Click()
Call NaoMoverFrm("FormModal",me.Name)
FormModal.Show
End Sub
 
Caso vc queira deixá-lo modal para todos os outros forms faça assim:
Private Sub Command1_Click()
Call NaoMoverFrm("FormModal")
FormModal.Show
End Sub
 
Espero q te ajude
 
t+
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 29/01/2005 02:54 hs            
Valeu, Ghost
 
é quase isso, com algumas adaptações, vai funcionar blz...
 
Abraços...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página