Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Открытие формы при загрузке базы данных (невидимой)

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base
Предыдущая тема :: Следующая тема  
Автор Сообщение
RFJ



Репутация: +1    

Зарегистрирован: 02.08.2011
Сообщения: 59

СообщениеДобавлено: Вт Фев 07, 2012 9:02 am    Заголовок сообщения: Открытие формы при загрузке базы данных (невидимой) Ответить с цитатой

Часто задают вопрос о том, как при загрузке базы данных сделать так, чтобы сразу открывалась нужная форма, а окно самой базы данных было невидимым.
Для демонстрации такого возможности использована база данных из http://libreoffice.3nx.ru/viewtopic.php?t=32
Событию "Открытие файла" назначается макрос OpenForm0, полный текст модуля, содержащего данный макрос, приведен ниже:
Код:

Global sDBURL$

Sub OpenForm0
oDoc=ThisComponent
sDBURL$=oDoc.URL
oDoc.CurrentController.Frame.ContainerWindow.setVisible(False)
sFormName$="counters"
OpenFormDB(sDBURL$, sFormName$)
MsgBox "Cделать видимым файл ODB"
oDoc.CurrentController.Frame.ContainerWindow.setVisible(True)
End Sub

'''''''''''''''''''''''''''''
Function OpenFormDB(sDBURL$, sFormName$)
Dim oDBDoc
Dim oFormDef
Dim oFormDocs
Dim oFormDoc
Dim oCon
Dim oBaseContext
Dim oDataBase

Dim oParms() As New com.sun.star.beans.PropertyValue

oDBDoc = ThisComponent
oFormDocs = oDBDoc.getFormDocuments()
oFormDef = oDBDoc.getFormDocuments().getByName(sFormName)
oDummyFormDef = oFormDef

oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataBase = oBaseContext.getByName(sDBURL$)
oCon = oDataBase.getConnection("", "")

AppendProperty(oParms(), "OpenMode", "open")
AppendProperty(oParms(), "ActiveConnection", oCon)

oFormDoc = oFormDocs.loadComponentFromURL(sFormName$, "", 0, oParms())

OpenFormDB() = oFormDoc
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function CreateProperty(sName$, oValue) As com.sun.star.beans.PropertyValue
Dim oProperty As New com.sun.star.beans.PropertyValue
oProperty.Name = sName
oProperty.Value = oValue
CreateProperty() = oProperty
End Function

''''''''''''''''''''''''''''''''''''''''''''''''
Sub AppendProperty(oProperties(), sName As String, ByVal oValue)
AppendToArray(oProperties(), CreateProperty(sName, oValue))
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub AppendToArray(oData(), ByVal x)
Dim iUB As Integer 'The upper bound of the array.
Dim iLB As Integer 'The lower bound of the array.
iUB = UBound(oData()) + 1
iLB = LBound(oData())
ReDim Preserve oData(iLB To iUB)
oData(iUB) = x
End Sub


Далее, слегка изменен макрос стартовой формы "counters" (приведена только часть, содержащая изменения):
Код:
Sub Main12
...
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   DataSource = DatabaseContext.getByName(sDBURL$)   ' <- изменено
   Connection = DataSource.GetConnection("", "")
   Statement = Connection.createStatement()
...
End Sub

Файл с примером http://ifolder.ru/28557615

Пояснения. При загрузке базы данных StartForm.odb на экране расположены только окно самой формы counters и окно MsgBox.
Нажимать ОК в MsgBox не нужно (!) - это нужно, только если вы хотите отобразить на экране саму базу данных.
Работать с формой counters можно вполне самостоятельно, не обращая внимание на MsgBox.


Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS