Por favor, alguém poderia me auxiliar na seguinte questão:
Estou trabalhando com direitos de acesso em meu projeto. Consegui manipular corretamente as permissões mas estou com problemas numa rotina de verificação de formulários abertos. Bom vamos para a parte mais técnica...
Meu menu está em um TreeView. Achei interessante antes de abrir um form, verificar se o mesmo já está aberto, negando a abertura de um novo form. Assim, criei uma function que utiliza a propriedade Forms, percorrendo todos os forms abertos pelo projeto.
Public Function fcVerificaFormAberto(sNomeForm As String) As Boolean
Dim iCont As Integer
sNomeForm = UCase(sNomeForm)
fcVerificaFormAberto = False
For iCont = 0 To Forms.Count - 1
If UCase(Forms(iCont).Name) = sNomeForm Then
fcVerificaFormAberto = True
iFormAberto = iCont
Exit Function
End If
Next
End Function
A partir daqui o menu permitirá a abertura do form, caso a função retorne False. Ao retornar False, a rotina de abertura de formulários realiza o seguinte processo:
If fcVerificaFormAberto(sTela) = False Then
Set oTela = Forms.Add(sTela)
If sPermiteAbertura = "S" Then
oTela.Show
End If
End If
Sendo sPermiteAbertura uma variável global que está no Load de cada form que será aberto, fazendo a verificação dos direitos de acesso. Meu problema está no código Set oTela = Forms.Add(sTela), pois quando o usuário não tem permissão para acessar a tela, o form é adicionado ao projeto, mesmo não estando aberto. Com isso, não consigo abrí-lo, mesmo que configure os direitos de acesso. Apenas conseguirei acessar se fechar o sistema.
Existe algum comando contrário ao Forms.Add, tipo um Forms.Remove onde eu possa passar um índice e remover esse form não aberto da memória?
Pergunta
Xistyle
Pessoal, boa noite!
Por favor, alguém poderia me auxiliar na seguinte questão:
Estou trabalhando com direitos de acesso em meu projeto. Consegui manipular corretamente as permissões mas estou com problemas numa rotina de verificação de formulários abertos. Bom vamos para a parte mais técnica...
Meu menu está em um TreeView. Achei interessante antes de abrir um form, verificar se o mesmo já está aberto, negando a abertura de um novo form. Assim, criei uma function que utiliza a propriedade Forms, percorrendo todos os forms abertos pelo projeto.
A partir daqui o menu permitirá a abertura do form, caso a função retorne False. Ao retornar False, a rotina de abertura de formulários realiza o seguinte processo:Sendo sPermiteAbertura uma variável global que está no Load de cada form que será aberto, fazendo a verificação dos direitos de acesso. Meu problema está no código Set oTela = Forms.Add(sTela), pois quando o usuário não tem permissão para acessar a tela, o form é adicionado ao projeto, mesmo não estando aberto. Com isso, não consigo abrí-lo, mesmo que configure os direitos de acesso. Apenas conseguirei acessar se fechar o sistema.
Existe algum comando contrário ao Forms.Add, tipo um Forms.Remove onde eu possa passar um índice e remover esse form não aberto da memória?
Abraços
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.