QUAL OU QUAIS FORM S ESTAO ATIVOS
Eu de novo, desta vez com uma dúvida bem cruelzinha, visse???
Como saber qual(ou quais) form(s) do projeto estão ativos e sendo mostrados (nos quais foram aplicados o metodo SHOW )
Tipo:
01. No meu projeto, atualmente tenho 185 forms;
02. Dificilmente tenho mais de 03 (tres) forms abertos;
03. Mas existe um form que é carregado no inicio da execução e fica o tempo todo ativo, mas sem aparecer (apenas o load , sem o show). neste form existe um objeto "TIMER" que a cada 10 segundos checa se existem mensagens trocadas entre os usuarios e avisa (MsgBox) que chegou uma nova mensagem. Mas ele apenas avisa que existem novas mensagens e algums usuario tapados se esquecem e não vão na caixa de entrada ver as mensagens;
04. Preciso saber qual o form que esta ativo no momento, para fazer aparecer um label avisando que ainda existem mensagens que não lidas ainda.
05. Resumindo: preciso saber quais os forms ativos (SHOW) para fazer algo assim:
if AmpliarFoto.visible = True then AmpliarFoto!LbAvisoDeChamada.visible = true
if MenuPrincipal.visible = True then MenuPrincipal!LbAvisoDeChamada.visible = true
if Usuarios.visible = True then Usuarios!LbAvisoDeChamada.visible = true
if Fornecedores.visible = True then Fornecedores!LbAvisoDeChamada.visible = true
if Utilitarios.visible = True then Utilitarios!LbAvisoDeChamada.visible = true
etc...etc...etc...
para fazer desta maneira acima, até que funciona, mas eu teria fazer a checagem dos 185 forms a cada 10 segundos, isso sem contar que a cada form novo que eu implementar no projeto, vou ter que alterar esta rotina tambem.
não teria como pegar todos os forms abertos, colocar seus nomes em umas variaveis indexadas e depois alterar o label apenas nas necessarias???
algo como:
for forms=1 to FormsAbertos
FormAberto(forms)=NomeDoFormularioAberto
FormAberto(forms)!LbAvisoDeChamada.visible = true
next forms
ou algo parecido... sei lá...
Obrigado...
Como saber qual(ou quais) form(s) do projeto estão ativos e sendo mostrados (nos quais foram aplicados o metodo SHOW )
Tipo:
01. No meu projeto, atualmente tenho 185 forms;
02. Dificilmente tenho mais de 03 (tres) forms abertos;
03. Mas existe um form que é carregado no inicio da execução e fica o tempo todo ativo, mas sem aparecer (apenas o load , sem o show). neste form existe um objeto "TIMER" que a cada 10 segundos checa se existem mensagens trocadas entre os usuarios e avisa (MsgBox) que chegou uma nova mensagem. Mas ele apenas avisa que existem novas mensagens e algums usuario tapados se esquecem e não vão na caixa de entrada ver as mensagens;
04. Preciso saber qual o form que esta ativo no momento, para fazer aparecer um label avisando que ainda existem mensagens que não lidas ainda.
05. Resumindo: preciso saber quais os forms ativos (SHOW) para fazer algo assim:
if AmpliarFoto.visible = True then AmpliarFoto!LbAvisoDeChamada.visible = true
if MenuPrincipal.visible = True then MenuPrincipal!LbAvisoDeChamada.visible = true
if Usuarios.visible = True then Usuarios!LbAvisoDeChamada.visible = true
if Fornecedores.visible = True then Fornecedores!LbAvisoDeChamada.visible = true
if Utilitarios.visible = True then Utilitarios!LbAvisoDeChamada.visible = true
etc...etc...etc...
para fazer desta maneira acima, até que funciona, mas eu teria fazer a checagem dos 185 forms a cada 10 segundos, isso sem contar que a cada form novo que eu implementar no projeto, vou ter que alterar esta rotina tambem.
não teria como pegar todos os forms abertos, colocar seus nomes em umas variaveis indexadas e depois alterar o label apenas nas necessarias???
algo como:
for forms=1 to FormsAbertos
FormAberto(forms)=NomeDoFormularioAberto
FormAberto(forms)!LbAvisoDeChamada.visible = true
next forms
ou algo parecido... sei lá...
Obrigado...
crie a seguinte funcao em um módulo
Sacou..?
Public Function IsFormOpen(byval FormName as string) as boolean
dim frm as form
for each frm in forms
if ucase$(formName) = frm.name then
IsFormOpen = true
Exit For
endif
set frm = nothing
end Function
para chamar basta usar
if IsFormName("FrmCadastro") then
'esta aberto
else
'nao esta aberto
endif
Sacou..?
saquei, mas...
eu terei que usar
185 vezes, não é??? mudando o "FrmCadastro" para TODOS os forms que tenho no projeto e quero saber se estão ativos, correto???
:((((
ok...
num tem jeito de obter uma lista dos formÂÂÂ's abertos no momento??? sem ter que checar um a um para ver se esta aberto ou não???
eu terei que usar
Citação:if IsFormName("FrmCadastro") then
'esta aberto
else
'nao esta aberto
end if
185 vezes, não é??? mudando o "FrmCadastro" para TODOS os forms que tenho no projeto e quero saber se estão ativos, correto???
:((((
ok...
num tem jeito de obter uma lista dos formÂÂÂ's abertos no momento??? sem ter que checar um a um para ver se esta aberto ou não???
Dim Nome_Form As Form
For Each a In Forms
MsgBox Nome_Form.Name
Next
assim ele mostra todos os forms abertos
170 For Each a In Forms
180 MsgBox Nome_Form.Name
190 Next
tentei da forma que vc indicou mas deu o seguinte erro...
OBJECT VARIABLE OR WITH BLOCK VARIABLE NOT SET NA LINHA 180
gostaria que funcionasse para eu poder fazer algo assim:
(DataHora é um botão presente em TODOS os formulario do projeto, e esta ideia ficara dentro de um timer que a cada 3 segundos, quando perceber que tem mensagem nova, ele manda um msgbox aviasndo que tem uma nova mensagem, e esta ideia é para que este botão fique piscando e mudando de cor e de caption tambem.)
170 For Each a In Forms
180 If Nome_Form.DataHora.Caption = "Data, Hora e outras opções" Then Nome_Form.DataHora.Caption = "Mensagens Novas": Nome_Form.DataHora.BackColor = &HFF& Else Nome_Form.DataHora.Caption = "Data, Hora e outras opções": Nome_Form.DataHora.BackColor = &H8000000F
190 Next
Obrigado...
180 MsgBox Nome_Form.Name
190 Next
tentei da forma que vc indicou mas deu o seguinte erro...
OBJECT VARIABLE OR WITH BLOCK VARIABLE NOT SET NA LINHA 180
gostaria que funcionasse para eu poder fazer algo assim:
(DataHora é um botão presente em TODOS os formulario do projeto, e esta ideia ficara dentro de um timer que a cada 3 segundos, quando perceber que tem mensagem nova, ele manda um msgbox aviasndo que tem uma nova mensagem, e esta ideia é para que este botão fique piscando e mudando de cor e de caption tambem.)
170 For Each a In Forms
180 If Nome_Form.DataHora.Caption = "Data, Hora e outras opções" Then Nome_Form.DataHora.Caption = "Mensagens Novas": Nome_Form.DataHora.BackColor = &HFF& Else Nome_Form.DataHora.Caption = "Data, Hora e outras opções": Nome_Form.DataHora.BackColor = &H8000000F
190 Next
Obrigado...
Dim Nome_Form As Form
For Each Nome_Form In Forms
MsgBox Nome_Form.Name
Nexteu esqueci de altarar a variavel a ali onde ela tava é o altere para NOme_Form
SHOW DE BOLA!!!!!!!
VALEU AMIGÃO!!!
VALEU AMIGÃO!!!
Tópico encerrado , respostas não são mais permitidas