ABRIR FORM ACIMA DA BARRA DE TAREFAS DO WINDOWS

PROFESSORES 22/09/2012 11:17:33
#410236
Olá Possuo um form com tamanho pequeno pois conforme a ação do usuário ele muda de lugar. Gostaria de saber como faço para que esse form sempre apareça acima da barra de tarefas do Windows e como faço para que ele passe o foco pra outro programa sem que fique atraz do msm.
Grato
GABRIEL 25/09/2012 21:20:25
#410494
procure por ontop aqui mesmo no site, o qu evc quer é deixar sobre por cima

ai recomendo a por a chamada do ontop num timer para cada 10 segundos
pq ai mesmo que algo entrar em foco, o timer faz voltar o foco pro seu soft

abraços


ahhhhhhhhhhhhhhh
tbm ponha o form para inicial maximizada e borderslyle=0 e o WindowState = 2
abraços
VELDRAME 26/09/2012 08:55:28
#410507
Resposta escolhida
Na verdade você terá que trabalhar com Matriz.
Tem um ótimo exemplo aqui no site, segue link:
http://vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=881

é uma janela no estilo a do MSN. De uma estuda e você logo estará posicionando o form aonde quiser.

Abraços!

PROFESSORES 26/09/2012 13:52:36
#410553
é que é assim. Meu form tem uma altura fixa. e a largura varia de acordo com a tela do usuário. Queria que ao clicar no botao a tela ficasse em cima da barra de tarefas. Pelo projeto que VELDRAME me passo percebi q tenho q calcular o tamanho da barra de tarefas e dae sim posiciona-la em cima. So que nao capitei a msg. eu calculo o tamanho e desconto isso de quanto?
VELDRAME 26/09/2012 18:11:49
#410601
Ele cria a matriz automaticamente e coloca acima da Data/Hora na SysTray na Função [ô]TIMER_1[ô]

QUANTO A LARGURA....
Private Sub Form_Load()
Me.Width = Screen.Width [txt-color=#e80000] [ô]Aqui é a Largura da sua Tela, ajuste conforme queira[/txt-color]
Me.Show
Me.Top = Screen.Height
Me.Left = Screen.Width - Me.Width - 50
NormalWindowStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
SetWindowLong Me.hwnd, GWL_EXSTYLE, NormalWindowStyle Or WS_EX_LAYERED
SetLayeredWindowAttributes Me.hwnd, 0, 255, LWA_ALPHA
GradientForm Me
I = 100
End Sub
GANDA.NICK 26/09/2012 19:07:33
#410603
Beleza

Não testei o code do colega VELDRAME.

Mas veja também este code, ele dá-lhe as dimensões da barra de tarefas e a sua posição. (também pode estar num dos lados ou em cima)

Private Declare Function SHAppBarMessage Lib [Ô]shell32.dll[Ô] (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Const ABM_GETTASKBARPOS = &H5

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type


Private Sub Command1_Click()
Dim abData As APPBARDATA
Dim lResult As Long

lResult = SHAppBarMessage(ABM_GETTASKBARPOS, abData)
LabTop = [Ô]Top= [Ô] & abData.rc.Top
LabBottom = [Ô]Bottom= [Ô] & abData.rc.Bottom
LabLeft = [Ô]Left= [Ô] & abData.rc.Left
LabRight = [Ô]Right= [Ô] & abData.rc.Right

MsgBox LabTop & [Ô] [Ô] & LabBottom & [Ô] [Ô] & LabLeft & [Ô] [Ô] & LabRight

End Sub



no meu caso:
TOP = 770
BOTTOM = 800

logo a altura da barra é 30 (800-770)

por exemplo se o form tem altura 100 o Form.Top terá que ser 670*15 (terá que multiplicar por 15, 1 pixel = 15 twips)


Também procure por [Ô]always on top[Ô] para ficar sempre visivel, encontra varios exemplos


té +
PROFESSORES 27/09/2012 18:59:28
#410708
Obrigado Funcionou :)
VELDRAME 28/09/2012 09:46:40
#410746
Agora é só pontuar e encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas