Claro. Eu fiz um formulário que basicamente tem botões que abrem
outros formulários. Para tanto deve-se
1. copiar e colar o código que segue num módulo criado,
preferencialmente em Minhas Macros (pois versões futuras do OpenOffice
não mais suportarão macros guardadas dentro de documentos, se não me
engano)
2. Abrir as propriedades do botão e na aba Eventos, clicar do lado de
"botão do mouse pressionado" e selecionar, a macro
AbreColoqueAquiNomeDoFormulário
3. Mas tem que alterar o código da sub AbreMain, para condizer com o
nome do formulário e com o nome do banco de dados. Outras subs que
necessitam de pequena alteração para rodar são
Inicializa_Formulario_Main e Inicializa_Variaveis_Main
4. No formulário original foi colocada uma chekbox, com nome
"ckbDesign" que quando ativada abre o formulário no modo de edição, e
quando desativada abre no modo normal
5. No evento "ao carregar" do formulário foi colocada a sub
Inicializa_Formulario_Main que deixa a "ckbDesign" desativada por
default, aí não corre o risco de um usuário desavisado abrir o
formulário no modo Design por engano
A seguir, o código:
public Forma
public ckbDesign
Sub AbreMain
local_openMode=Retorna_openMode
subDisplayForm("sdbc:odbc:ColoqueAquiNomeDoBD","Main",local_openMode)
end sub
sub Inicializa_Formulario_Main
Inicializa_Variaveis_Main
if(not IsEmpty(ckbDesign)) then
ckbDesign.State = 0
end if
end sub
Sub Inicializa_Variaveis_Main
'verifica se variaveis estão inicializadas, caso contrário inicializa-as
'são os objetos (caixas de texto, checkbox etc) que são acessadas por
outras funções/subs
if((not IsObject(Forma)) or IsNull(Forma)) then
Forma = ThisComponent.DrawPage.Forms.getByIndex(0)
ckbDesign=Forma.GetByName("ckbDesign")
end if
end sub
sub subDisplayForm(sDatabaseURL as string, sFormName as string,
openMode as string)
'Abre um formulário do documento Base atual localizada no documento
Base sDataBaseURL
dim mArgs(1) as new com.sun.star.beans.PropertyValue
oDatabase = fnGetOpenDatabase(sDatabaseURL)
if (not isObject(oDatabase)) then
MsgBox("Formulario nao pode ser aberto. Feche esta janela e abra
pela guia Formulario do Base")
Exit Sub
end if
oConnection = oDatabase.DataSource.getConnection("","")
mArgs(0).name = "OpenMode"
mArgs(0).value = openMode ' open "openDesign" ' '"openForMail"
mArgs(1).name = "ActiveConnection"
mArgs(1).value = oConnection
oForm = oDatabase.getFormDocuments.getByName(sFormName)
'oForm.visibilityChanged(true)
oDatabase.getFormDocuments.loadComponentFromURL(sFormName, "_blank",
0, mArgs())
end sub
function fnGetOpenDatabase(sDatabaseURL as string)
'Acessa o documento Base sDatabaseURL. Na verdade sDatabaseURL é
ignorada
'pois retorna o primeiro banco de dados encontrado. Por isso, esta macro
'só pode ser executada com um único documento do Base aberto, ou se
'tiver mais de um, não dá pra garantir que será retornado o certo
'e se não tiver nenhum documento aberto esta macro não pode ser
executada
'pois foi feita para rodar dentro de um formulário do Base
oEnum = StarDesktop.getComponents.createEnumeration
On Error goto next_while
while oEnum.hasMoreElements
oPosDB = oEnum.nextElement
' MsgBox oPosDB.ImplementationName
if ((not isEmpty(oPosDB)) and isObject(oPosDB)) then
if
(StrComp(oPosDB.ImplementationName,"com.sun.star.comp.dba.ODatabaseDocument")=0)
then
' if (oPosDB.DataSource.URL = sDataBaseURL)then
fnGetOpenDatabase = oPosDB
exit function
' end if
end if
end if
next_while:
wend
end function
Function Retorna_openMode as string
'verifica se a ckbDesign etá checkada para abrir os formulário no
modo design (para edição) ou no modo somente-leitura
On Error goto Oops
Inicializa_Variaveis_Main
if(ckbDesign.State = 1) then
Retorna_openMode = "openDesign"
else
Retorna_openMode = "open"
end if
goto myend
Oops:
Retorna_openMode = "open"
myend:
end function
2008/7/15 Marcelo nunes dos santos <[EMAIL PROTECTED]>:
> alguem sabe me dizer se tem como eu criar no base um formulario com varios
> botoes que quando clico neles eles chamam outro formulario.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Juari Ritter Müller - [EMAIL PROTECTED] - Tudo não é nada.
jm.freeshell.org nothepad.wordpress.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]