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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Form não perder o foco, quando clicar fora dele...
Elias-Smool
MORRINHOS
GO - BRASIL
ENUNCIADA !
Postada em 11/08/2005 15:23 hs            
Se eu tenho um form aberto na tela, quando eu abro uma form menor na frente desse outro, eu não quero que a menor perca o foco ou vá para atrás do outro form quando eu clicar fora dela, a não ser se eu a feche...como faço isso?
 
Um grande abraço
   
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 11/08/2005 16:12 hs         
É o famoso "Always on Top". Procure em http://www.planet-source-code.com que vc acha vários exemplos
 
   
Elias-Smool
MORRINHOS
GO - BRASIL
ENUNCIADA !
Postada em 11/08/2005 16:25 hs            
Valeu pela dica, tô tentando mais ainda não consegui nenhum exemplo, se vc ou outra pessoa tiver algum exemplo eu agradeço muito. Vlw
   
Mr.Data
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 12/08/2005 11:10 hs            
Basicamente é:
 
Coloque todo o código abaixo num Module:
---------------------------------------------------------------------------------
Option Explicit
' SetWindowPos Flags
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOREDRAW = &H8
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_FRAMECHANGED = &H20        '  The frame changed: send WM_NCCALCSIZE
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_HIDEWINDOW = &H80
Public Const SWP_NOCOPYBITS = &H100
Public Const SWP_NOOWNERZORDER = &H200      '  Don't do owner Z ordering
Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
' SetWindowPos() hwndInsertAfter values
Public Const HWND_TOP = 0
Public Const HWND_BOTTOM = 1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Sub MakeTop(frmHwnd As Long, Optional bolState As Boolean = True)
    Dim lngRet As Long
    If bolState Then
        lngRet = SetWindowPos(frmHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_NOREDRAW)
    Else
        lngRet = SetWindowPos(frmHwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_NOREDRAW)
    End If
End Sub

---------------------------------------------------------------------------------
Para usar, chame do Form_Load que você quer que aconteça:
Call MakeTop(Me.Hwnd)
Para cancelar o "Always On Top", use:
Call MakeTop(Me.Hwnd, False)
 
É isso! Emoções
 
[]'s
   
Susana
ANGRA DOS REIS
RJ - BRASIL
ENUNCIADA !
Postada em 12/08/2005 12:17 hs            
Form.show vbmodal não serve?
 
   
Mr.Data
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 12/08/2005 14:24 hs            
Nope! Neste caso, não pelo simples fato que o "modal" só funciona em nível de aplicativo, não do Sistema Operacional. Para o aplicativo (outras telas) ele é modal e travado, mas não para o SO. No caso de um form só no aplicativo, vc ainda tem que criar a Sub Main() e redirecionar o início do projeto para ela, para mostrar modal. Mas sem outros formulários para ficar por cima, fica sem sentido. Este código deixa a janela "always on top" (sempre em cima) das outras janelas. É a mesma coisa que o Task Manager (Gerenciador de Tarefas) faz. Você pode clicar nas janelas abaixo, mas ele está sempre sobre elas.
 

[ ]'s

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

Emoções Juliano Lopes - Coordenador de Projetos / Arquiteto de Software Emoções

TÓPICO EDITADO
 
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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