JANELA DE NOVA MENSAGEM SUBINDO COMO NO MSN

SACOFRITO 16/04/2012 22:04:05
#400021
Ola galera tudo bem ?
Preciso fazer um modulo de mensagem de usuario para usuário...pensei em deixar essa rotina dentro de um timer no meu formmenu..
Mas estou com algumas duvidas. Da para simplesmente subir outro form por cima de todos que estiverem abertos? Exatamente como acontece no msn(voce tem uma nova mensagem)
ai a pessoa clica e ve de quem veio, a mensagem completa etc.
ou entao fecha a janelinha.. mas como fazer para que o form[ô]zinho va subindo aos poucos?

Att,
sacofrito
LEANTRONIC 16/04/2012 22:48:54
#400022
Se não me engano se vc procurar no site tem um exemplo disso ai
LEANTRONIC 16/04/2012 22:51:56
#400023
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=9018

Da uma olhada e ve se é isso ai
GANDA.NICK 16/04/2012 22:53:29
#400024
Resposta escolhida
boas, veja se isto o ajuda...


Coloque um Timer nesse seu novo Form com um intervalo curto ex: 25

nesse seu form coloque isto:

Option Explicit

[ô]Allways on TOP
Private 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

Private Sub Form_Load()
Dim lR As Long
lR = SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 0)

Me.Height = 150 * 15
Me.Width = 200 * 15
Me.Top = Screen.Height
Me.Left = Screen.Width - Me.Width
End Sub

Private Sub Timer1_Timer()
Me.Top = Me.Top - 5 * 15
If Me.Top < Screen.Height - Me.Height Then Timer1.Enabled = False
End Sub


Veja o resultado, se gostar adapte a seu jeito

té +
FILMAN 16/04/2012 22:54:43
#400026
Faça assim vê se serve ai é só adaptar

Crie dois Form: Form1, Form2

No Form1
Colocar 3 Timer: Timer1, Timer2, Timer3 e um CommandButtom: Command1

Timer1
Private Sub Timer1_Timer()
Form2.Top = Form2.Top + 50
If Form2.Top >= -25 Then
Timer1.Enabled = False
Timer3.Enabled = True
End If
End Sub


Timer2
Private Sub Timer2_Timer()
Form2.Top = Form2.Top - 50
If Form2.Top <= (Form2.Height + 100) * -1 Then
Timer2.Enabled = False
End If
End Sub


Timer3
Private Sub Timer3_Timer()
Timer3.Enabled = False
Timer2.Enabled = True
End Sub


CommandButtom
Private Sub Command1_Click()
Form2.Show
Form2.Top = (Form2.Height + 100) * -1
Form2.Left = 0
Timer1.Enabled = True
Call SetWindowPos(Form2.hWnd, -1, 0, 0, 0, 0, 16 Or 64 Or 2 Or 1)
End Sub


No GENERAL do FORM1 colocar uma função API
Private Declare Sub 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)


No Form2
Mude a propriedade BorderStyle para NONE
E coloque uma LABEL: Label1 coloque na parte superior a direita

No Label1
Propriedade Caption = Fechar

No evento Click do Label
Private Sub Label1_Click()
Unload Me
End Sub


No evento Active do Form coloque
Private Sub Form_Activate()
Form1.SetFocus
End Sub



Vê se te ajuda
MARCELO.TREZE 17/04/2012 14:31:15
#400083
Colega saco frito, neste projeto existe um montão de coisinhas que poderá aproveitar, inclusive a mensagem que vc deseja, é so dar uma garimpada.

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=7671

Ps: nos comentários existe a estrutura do banco que não foi junto com o projeto.

SACOFRITO 17/04/2012 21:35:26
#400119
Obrigado gente pelos comentarios.. vou analisar todos e ver qual se encaixa melhor e/ou qual conseguirei fazer mais facilmente..
Retornarei em breve.
SACOFRITO 24/04/2012 08:37:37
#400597
Fala pessoal. A dica do amigo GANDA_NICK funcionou para a janela subir lateralmente. E MARCELO TREZE, baixei seu projeto e estou [ô]debulhando[ô] ele e pegando algumas idéias. Até mais, obrigado a todos.
Tópico encerrado , respostas não são mais permitidas