PASSAR NOME DO FORM PARA CHAMAR FUNCAO

LUCIANORW 09/08/2010 13:53:20
#349798
Boa noite!!!
Estou precisando passar o nome do(s) form(s) aberto(s) para uma função, mas não estou conseguindo.
Poderiam indicar no código abaixo onde estou errando?

Private Sub Form_Timer()
Static IntCron As Integer
IntCron = IntCron + 1
Me.txt_aviso = [Ô]ATENÇÃO, [Ô] & Format(CurrentUser(), [Ô]>[Ô]) & [Ô]!!! [Ô] & vbCrLf _
& [Ô]O sistema está ocioso há [Ô] & v_tempo_ocioso & [Ô] segundos![Ô] & vbCrLf _
& [Ô]Clique em Continuar usando para continuar no sistema![Ô] & vbCrLf & vbCrLf _
& [Ô]Sistema fechando em [Ô] & Me.txt_cronometro & [Ô] segundos.[Ô]
If IntCron = 10 Then
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
For Each obj In dbs.AllForms
If obj.IsLoaded = True Then
[ô]////////////// aqui que não estou conseguindo chamar função passando o nome do form aberto
Call limpa_tag(obj.Name)
End If
Next obj
Form_frm_Menu.sair
Else
Me.txt_cronometro = 10 - IntCron
End If
End Sub

Função que preciso chamar:

Function limpa_tag(frm As Form)
For Each ctl In frm.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
ctl.Tag = [Ô][Ô]
End If
Next ctl
End Function

Grato
Luciano
Access2003
MARCOSLING 09/08/2010 14:40:03
#349811
Resposta escolhida
Tentou passar apenas obj ao invés de obj.name?
LUCIANORW 09/08/2010 14:55:32
#349815
Boa tarde Marcos!!!
Sim, já tentei, dá erro 13 (Tipo incompatíveis).
Não sei estou falando besteira, mas acho que é porque estou passando uma variável AccessObject para uma função que recebe uma variável Form.
Será que é isto?
Se for, como resolvo?
Att
Luciano
MARCOSLING 09/08/2010 15:06:55
#349820
já tentou declarar obj como form?

LUCIANORW 09/08/2010 15:11:21
#349821
Ola Marcos,
Sim, já tentei, o erro ocorre sempre quando vou chamar a função limpa_tag, parece que não aceita .Name
Luciano
MARCOSLING 09/08/2010 15:40:53
#349825
Então tenta assim:

substitua a sua rotina [Ô]limpa_tag[Ô] por essa:

Function limpa_tag(form_name As String)
For Each ctl In Forms(form_name).Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
ctl.Tag = [Ô][Ô]
End If
Next ctl
End Function
LUCIANORW 09/08/2010 15:41:47
#349826
Agora sim, após umas pesquisas:

Private Sub Form_Timer()
Dim openFrm As Access.Form
Static IntCron As Integer
IntCron = IntCron + 1
Me.txt_aviso = [Ô]ATENÇÃO, [Ô] & Format(CurrentUser(), [Ô]>[Ô]) & [Ô]!!! [Ô] & vbCrLf _
& [Ô]O sistema está ocioso há [Ô] & (v_tempo_ocioso / 60) & [Ô] minutos![Ô] & vbCrLf _
& [Ô]Clique em [ô]Continuar usando[ô] para continuar no sistema![Ô] & vbCrLf & vbCrLf _
& [Ô]Sistema fechando em [Ô] & Me.txt_cronometro & [Ô] segundos.[Ô]
If IntCron = 10 Then
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
For Each obj In dbs.AllForms
If obj.IsLoaded = True Then
Set openFrm = Forms(obj.Name)
For Each ctl In openFrm.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
ctl.Tag = [Ô][Ô]
End If
Next ctl
End If
Next obj
Form_frm_Menu.sair
Else
Me.txt_cronometro = 10 - IntCron
End If
End Sub

Aceito sugestões para melhorar.
Grato a todos
Luciano
LUCIANORW 09/08/2010 15:44:40
#349828
Marcos, vou testar sua sugestão tb.
Luciano
Tópico encerrado , respostas não são mais permitidas