TEXTO STRING COMO COMANDO EM VB6
bom, olha só eu tenho a seguinte funçao dentro desse formNovoUser...
dim Menu as control
dim L as listItem
for each Menu in formPrincipal.Controls [ô]formPrincipal é o MDI
if TypeOf Menu is Menu then
set L = lvwLista.ListItems.add
L.Text = Menu.Caption
L.Tag = Menu.Name
end if
next
essa função ai lista em uma listview todos os meus menus do formulario principal para que o administrador do sistema ao cadastrar o usuário possa escolher quais menus este usuário vai enxergar...
bom isso ta resolvido, porém meu cliente quer tbm poder escolher quais botoes dos formularios o usuario terá acesso.
por isso precisava percorrer os forms listando os botoes para que o Administrador possa selecionar.
dim Menu as control
dim L as listItem
for each Menu in formPrincipal.Controls [ô]formPrincipal é o MDI
if TypeOf Menu is Menu then
set L = lvwLista.ListItems.add
L.Text = Menu.Caption
L.Tag = Menu.Name
end if
next
essa função ai lista em uma listview todos os meus menus do formulario principal para que o administrador do sistema ao cadastrar o usuário possa escolher quais menus este usuário vai enxergar...
bom isso ta resolvido, porém meu cliente quer tbm poder escolher quais botoes dos formularios o usuario terá acesso.
por isso precisava percorrer os forms listando os botoes para que o Administrador possa selecionar.
Bem agora sua questão se transformou em duas, então...
A primeira é simples, coloca esse código acima dentro de uma função num módulo como te disse, ex::
Public Sub ListaItensMenu(MyControle As Control)
dim Menu as control
dim L as listItem
for each Menu in formPrincipal.Controls [ô]formPrincipal é o MDI
if TypeOf Menu is Menu then
set L = MyControle.ListItems.add
L.Text = Menu.Caption
L.Tag = Menu.Name
end if
next
End Function
Pode então chamá-la de qualquer lugar assim:
ListaItensMenu(Nome do seu controle no formulário aberto e em uso)
Agora para resolver o problema dos botões, você teria de criar uma outra função num módulo para fazer o seguinte:
1- carrega cada formulário por ordem, um por vez, de modo Hide (Oculto)
2- percorre todos os controles identificando quem é botão e seu nome
3- passa essas informações para o listview que quiser
4- fecha o form
roda isso num loop até o último formulário de seu projeto que queira associar permissões, pois muitos não serão usados, como telas de resultados, algumas consultas, tela principal e sobre por exemplo. Estas não teriam de ser avaliadas.
Só não poderá esquecer que a cada formulário criado, terá de ir nessa função e atualizá-la com o novo formulário.
A primeira é simples, coloca esse código acima dentro de uma função num módulo como te disse, ex::
Public Sub ListaItensMenu(MyControle As Control)
dim Menu as control
dim L as listItem
for each Menu in formPrincipal.Controls [ô]formPrincipal é o MDI
if TypeOf Menu is Menu then
set L = MyControle.ListItems.add
L.Text = Menu.Caption
L.Tag = Menu.Name
end if
next
End Function
Pode então chamá-la de qualquer lugar assim:
ListaItensMenu(Nome do seu controle no formulário aberto e em uso)
Agora para resolver o problema dos botões, você teria de criar uma outra função num módulo para fazer o seguinte:
1- carrega cada formulário por ordem, um por vez, de modo Hide (Oculto)
2- percorre todos os controles identificando quem é botão e seu nome
3- passa essas informações para o listview que quiser
4- fecha o form
roda isso num loop até o último formulário de seu projeto que queira associar permissões, pois muitos não serão usados, como telas de resultados, algumas consultas, tela principal e sobre por exemplo. Estas não teriam de ser avaliadas.
Só não poderá esquecer que a cada formulário criado, terá de ir nessa função e atualizá-la com o novo formulário.
Bom dia.
Amigo, tente a seguinte rotina:
Para chamar o Form, use o seguinte código:
Caso haja necessidade, adapte a rotina como precisar.
Até breve.
JSFF77
Amigo, tente a seguinte rotina:
Public Sub LoadForm(ByVal sFormName As String)
On Error GoTo Err_LoadForm
Dim oFormToLoad As Form
Set oFormToLoad = Forms.Add(sFormName)
Load oFormToLoad
oFormToLoad.Show
Exit Sub
Err_LoadForm:
If (Err.Number = 424) Then
Msgbox [Ô]O objeto Form informado não existe![Ô], vbExclamation
Else
Msgbox [Ô]Houve um erro![Ô]& vbCrLf & Err.Description
End If
End Sub
Para chamar o Form, use o seguinte código:
LoadForm [Ô]SeuForm[Ô]
Caso haja necessidade, adapte a rotina como precisar.
Até breve.
JSFF77
JSFF77,
VC é o cara, faz um tempão que tava procurando uma forma de fazer isso. deu certinho como eu queria.
não conhecia isso de Forms.Add()
bah show de bola.
muito obrigado
VC é o cara, faz um tempão que tava procurando uma forma de fazer isso. deu certinho como eu queria.
não conhecia isso de Forms.Add()
bah show de bola.
muito obrigado
Tópico encerrado , respostas não são mais permitidas