FORM DO TIPO MSGBOX COM TIMER

SIRIOUS 09/01/2015 12:24:34
#443679
Caros amigos do forum:
Num aplicativo em VB6 há uma combobox dentro de um formulário de consultas que, quando selecionada uma de suas alternativas, uma série de registros correspondentes é exibida.
Crei um pequeno form (parecido com uma msgbox), controlado por um timer com interval = 6000, que exibe uma mensagem, numa textbox, sobre a quantidade de registros selecionados. Esse pequeno form é executado logo que uma das alternativas da combo é escolhida, sendo encerrado aprox. 6 segundos.
Com a propriedade <StartUpPosition> em 3 (Windows Default), esse 2º form é exibido ao lado do form principal. Ou seja, ele fica em segundo plano, e só é exibido porque o form principal não ocupa toda a tela.

Como devo fazer para que, quando ele for exibido pelo tempo programado no timer, fique em primeiro plano (sobre o form principal? - Nota: se mudar sua propriedade StartUpPosition para 2 - CenterScreen, esse form desaparece do campo de visão, embora seja executado...)

(No evento click da combo, após selecionada uma de suas opções, o form
(tipo msgbox) é carregado conforme abaixo):
...
frmTexto.Show
frmTexto.Text1 = [Ô]Estão cadastrados [Ô] & Total & [Ô] títulos no gênero.[Ô]

...
MARCELO.TREZE 09/01/2015 12:31:32
#443681
Resposta escolhida
é simples colega

em um módulo coloque:

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40

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

Public Sub FormOnTop(myFrm As Form, SetOnTop As Boolean)
Dim lFlag As Long
If SetOnTop Then
lFlag = HWND_TOPMOST
Else
lFlag = HWND_NOTOPMOST
End If

SetWindowPos myFrm.hwnd, lFlag, myFrm.Left / Screen.TwipsPerPixelX, myFrm.Top / Screen.TwipsPerPixelY, myFrm.Width / Screen.TwipsPerPixelX, myFrm.Height / Screen.TwipsPerPixelY, SWP_NOACTIVATE Or SWP_SHOWWINDOW
End Sub


depois no load deste form que vc criou para ser msgbox colqoue

FormOnTop Me, True


para voltar ao normal você poderá colocar no unload deste mesmo form

FormOnTop Me, False


e é isso teste ai pra ver o que acontece

SIRIOUS 09/01/2015 15:02:36
#443686


Obrigado, Marcelo.
Funcionou conforme eu precisava (na verdade, o intúito de mudar da msgbox para o form do tipo msgbox tem a ver com a paralisação do aplicativo, toda vez que uma
msgbox é exibida, até que alguém clique no botão OK para liberar a msgbox. No meu caso, quando o form de Consultas está na tela, obviamente a base de dados (e suas tabelas) está carregada, para atender às diversas possibilidades de se consultar os dados cadastrados. Assim, ao contrário da msgbox, esse form que informa o total de registros conforme a pesquisa, fica ativo por no máximo 6 segundos, retornando para a tela de Consultas, que é monitorada em tempo real, através de uma rotina de contagem de tempo, para que feche o form de Consultas dentro de 5 minutos, retornando à tela de Entrada. Essa tela de entrada não acessa a base de dados do sistema. Logo, se ficar ativa no computador por um tempo longo e, de repente, a energia cair, não haveria danos para a base de dados)...

Agradeço, novamente, pela gentileza da informação.
Tópico encerrado , respostas não são mais permitidas