TEXTO STRING COMO COMANDO EM VB6

JEISONANTONI 16/12/2010 13:22:42
#359669
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.
LUIS.HERRERA 16/12/2010 15:50:05
#359691
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.

JSFF77 17/12/2010 08:27:58
#359723
Resposta escolhida
Bom dia.

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
JEISONANTONI 17/12/2010 12:52:19
#359765
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
Página 2 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas