Randsolo
|
BELO HORIZONTE MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/07/2004 17:11 hs
Olá pessoal. Gostaria de saber se há uma outra forma de abrir um form através de uma string. Temos os nomes dos forms em um banco de dados. Gostaríamos de saber como abrir o form através desta informação de forma dinâmica. Tetamos a seguinte função: Public Sub CarregaForm(slform As String, optional vModal as boolean) On Error GoTo ERRO Dim FormToLoad As Form Set FormToLoad = Forms.Add(slform) If vModal Then FormToLoad.Show vbModal, MDISisTrans Else FormToLoad.Show FormToLoad.SetFocus End If End If Exit Sub ERRO: Rotina_Erro "CarregaForm" End Sub O problema é q a rotina acima apenas instancia o form. Se eu fazer qq referencia ao form novamente, ele dá um .show no form, gerando dois forms.
Será q tem outra forma de abrir um form usando uma string??? Agradeço desde já a atenção!!!
E que a Força estejam com voces... ;-)
|
|
|
|
|
Postada em 22/07/2004 10:21 hs
|
|
|
Leandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 07/01/2009 15:54 hs
Teria como fazer o mesmo procedimento mas com objeto data control?
tentei o seguinte mas n deu certo
Dim dataC as Data
Set dataC = datas.Add("DataRegistros") Load dataC MsgBox dataC.Recordset.Count
no aguardo!
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
Postada em 07/01/2009 16:49 hs
posso dar uma sugestão, faça o seguinte
Vá em Project / Components... e selecione microsoft Script Control 1.0
feito isto, inclua em seu form este componente.
agora vamos ao código
no load do form crie os objetos, desta forma
Private Sub Form_load() ScriptControl1.AddObject "Form2", Form2 ScriptControl1.AddObject "Form3", Form3 ' e assim por diante End Sub
bom no botão Cole este unico código
ScriptControl1.ExecuteStatement ("Form2.show") ScriptControl1.Reset
e pronto seu form será chamado
para adptar é fácil
ScriptControl1.ExecuteStatement (txtNomeDoForm.Text & ".show") ScriptControl1.Reset
veja se desta forma já ajuda
PS: você pode usar qualquer função do form em forma de string desta forma ex:
ScriptControl1.ExecuteStatement ("Form2.Heigth = 12000") ScriptControl1.Reset
até
diga se funcionou
|
|
|
PH1959
|
SÃO JOSÉ DOS CAMPOS SP - BRASIL
|
|
Postada em 07/01/2009 16:57 hs
experimenta assim: no declarations dim controle(N) as object ' substitui N pelo numero de Datacontrol q vc tem. no load do form set controle(0)= datacontrol1: ....: set controle(N)= datacontrolN agora é só carregar no seu procedure
|
|
|
Randsolo
|
BELO HORIZONTE MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 12/01/2009 15:42 hs
Oi Gente. Eu consegui resolver o q eu queria. Na verdade precisava montar os MENUS do sistema de acordo com os forms armazenados em um banco de dados. Fiz da seguinte forma:
Primeiro crio os Menus manualmente mesmo; Depois coloco as opções .visible e .Enabled como falso (menos para os menus cabeçários) Depois chamo a seguinte função abaixo:
Public Sub SetMenu() Dim clMenu As Control sgQuery = "SELECT A.Formulario, B.Nome, B.Nivel,B.Menu, " & vbCr & _ " B.MenuItem, A.Acesso " & vbCr & _ "FROM Controle_Acesso as A INNER JOIN Formulario as B ON A.Formulario = B.Codigo" & vbCr & _ "WHERE A.Empresa = " & lgEmpresa & vbCr & _ " AND A.CodUsuario = " & lgUsuario & vbCr & _ " AND A.Acesso = 'S'" & vbCr & _ "ORDER BY B.Menu, B.MenuItem" Call consulta2(sgQuery) With RsADO2 Do While Not .EOF For igCount = 0 To Me.Controls.Count - 1 Set clMenu = Me.Controls(igCount) If TypeOf Me.Controls(igCount) Is Menu Then If Trim(UCase(clMenu.Name)) = UCase(Trim("" & !Menu)) _ And Trim(UCase(clMenu.Index)) = UCase(Trim("" & !MenuItem)) Then clMenu.Enabled = True clMenu.Visible = True Exit For End If End If Next
.MoveNext Loop .Close End With Set RsADO2 = Nothing End Sub
Assim monto o menu conforme eu quero, de acordo com as permissões do usuario. E no evento click do Menu, crio a chamada do form normalmente, conforme abaixo:
Private Sub mnuRelItem_Click(Index As Integer) 'On Error Resume Next MousePointer = vbHourglass Select Case Index Case 0: Call CarregaForm(frmRelTipo) Case 1: Call CarregaForm(frmRelTramitacao) Case 2: Call CarregaForm(frmRelTramitacaoProcesso) End Select MousePointer = vbDefault End Sub
Public Sub CarregaForm(vForm As Form, Optional vModal As Boolean) '********************************************************* '** Rotina para Exibir os forms no Sistema ** '** Criado por Randerson Maurilio em 18/09/2003 ** '********************************************************* On Error Resume Next With vForm If vModal Then .Show vbModal, MDIPrincipal Else .Show .SetFocus End If End With End Sub
Vlw a ajuda de todos
|
|
|