Option Explicit Global Const RID_COMMON = 1000 Global Const RID_FORM = 2200 Public Const SBCANCEL = 2 Public Const SBREPEAT = 4 Public WizardTitle(1 To 3) as String Public DlgFormDB as Object Public oDialogModel as Object ' Global Msg Dim sMsgWizardName as String Dim sMsgErrMsg as String Dim sMsgErrFormOpen as String Dim sMsgErrNoDatabase as String Dim sMsgErrNoTableInDatabase as String Dim sMsgErrTitleSuggestedExist as String Dim sMsgErrTitleSyntaxError as String Dim sMsgErrTitleAsTableExist as String Dim sMsgProgressText as String Dim sMsgCreatedForm as String Dim sMsgErrCouldNotOpenObject as String Dim sMsgErrNameToLong as String Dim Form_ilFormTitleSuggestPrefix as String Dim sTimeAppendix as String Dim sDateAppendix as String Public sGoOn as String Public sReady as String Public sMsgNoConnection as String Public sWriterFilterName as String Public sWriterTemplateFiltername as String Public XPixelFactor as Long Public YPixelFactor as Long Sub LoadLanguage () sMsgWizardName = GetResText(RID_FORM + 0) sMsgErrMsg = GetResText(RID_COMMON + 6) sMsgErrFormOpen = GetResText(RID_COMMON + 7) sMsgErrNoDatabase = GetResText(RID_COMMON + 8) sMsgErrNoTableInDatabase = GetResText(RID_COMMON + 9) sMsgErrTitleSuggestedExist = GetResText(RID_COMMON + 10) sMsgErrTitleAsTableExist = GetResText(RID_COMMON + 10) sMsgErrTitleSyntaxError = GetResText(RID_COMMON + 11) sMsgNoConnection = GetResText(RID_COMMON + 14 sMsgProgressText = GetResText(RID_FORM + 2) sMsgCreatedForm = GetResText(RID_FORM + 26) sMsgErrNameToLong = GetResText (RID_FORM + 27) sMsgErrCouldNotOpenObject = GetResText (RID_COMMON + 13) ' Internal Logic Form_ilFormTitleSuggestPrefix = GetResText(RID_FORM + 3) sDateAppendix = GetResText(RID_FORM + 4) sTimeAppendix = GetResText(RID_FORM + 5) sReady = GetResText(RID_COMMON + 0) SetDialogLanguage() End Sub Sub SetDialogLanguage () DlgFormDB = LoadDialog("FormWizard", "DlgFormDB") oDialogModel = DlgFormDB.Model With oDialogModel .cmdCancel.Label = GetResText(RID_COMMON + 1) .cmdBack.Label = GetResText(RID_COMMON + 2) .cmdHelp.Label = GetResText(RID_COMMON + 20) sGoOn = GetResText(RID_COMMON + 3) .cmdGoOn.Label = sGoOn .lblDatabases.Label = GetResText(RID_FORM + 11) .lblTables.Label = GetResText(RID_FORM + 6) XPixelFactor = 100000/DlgFormDB.GetControl("lstDatabases").Peer.GetInfo.PixelPerMeterX YPixelFactor = 100000/DlgFormDB.GetControl("lstDatabases").Peer.GetInfo.PixelPerMeterY .lblFields.Label = GetResText(RID_FORM + 12) .lblSelFields.Label = GetResText(RID_FORM + 13) .lblStyles.Label = GetResText(RID_FORM + 21) .hlnBorderLayout.Label = GetResText(RID_FORM + 28) .hlnAlign.Label = GetResText(RID_FORM + 32) .hlnArrangements.Label = GetResText(RID_FORM + 35) WizardTitle(1) = GetResText(RID_FORM + 45) WizardTitle(2) = GetResText(RID_FORM + 46) WizardTitle(3) = GetResText(RID_FORM + 47) .hlnBinaries.Label = GetResText(RID_FORM + 50) .optIgnoreBinaries.Label = GetResText(RID_FORM + 51) .optBinariesasGraphics.Label = GetResText(RID_FORM + 52) .hlnBackground.Label = GetResText(RID_FORM + 55) .optTiled.Label = GetResText(RID_FORM + 56) .optArea.Label = GetResText(RID_FORM + 57) .optBorder0.Label = GetResText(RID_FORM + 29) .optBorder1.Label = GetResText(RID_FORM + 30) .optBorder2.Label = GetResText(RID_FORM + 31) .optBorder1.State = 1 .optAlign0.Label = GetResText(RID_FORM + 33) .optAlign2.Label = GetResText(RID_FORM + 34) .optAlign0.State = 1 .cmdArrange1.ImageURL = FormPath & "Arrange_1.gif" .cmdArrange1.HelpText = GetResText(RID_FORM + 36) .cmdArrange2.ImageURL = FormPath & "Arrange_2.gif" .cmdArrange2.HelpText = GetResText(RID_FORM + 37) .cmdArrange3.ImageURL = FormPath & "Arrange_3.gif" .cmdArrange3.HelpText = GetResText(RID_FORM + 40) .cmdArrange4.ImageURL = FormPath & "Arrange_4.gif" .cmdArrange4.HelpText = GetResText(RID_FORM + 38) .cmdArrange5.ImageURL = FormPath & "Arrange_5.gif" .cmdArrange5.HelpText = GetResText(RID_FORM + 39) sWriterFilterName = GetResText(RID_FORM + 70) sWriterTemplateFilterName = GetResText(RID_FORM + 71) End With End Sub Sub InitializeWidthList() 'Todo: Was ist mit Currencies? Wieso sind dafür in der API keine Feldtypen definiert? ' 'Currency' ist ein Flag, dass grundsätzlich an jedes Feld angehängt sein kann. ' An der Connection kann man irgendwie abfragen, ob ein bestimmter Datentyp als Währung ' interpretiert wird. Darstellung über Numberformatter. Ist nicht konsistent über Datenbanken. ' außerdem dürften hier einige Treiber auch buggy sein. ' Todo: Bugfix to Bug #88329 If Ubound(WidthList(),1) > 15 Then ReDim WidthList(15,4) End If WidthList(0,0) = com.sun.star.sdbc.DataType.BIT ' = -7; WidthList(0,1) = cCheckbox WidthList(0,2) = False WidthList(0,3) = "CheckBox" WidthList(1,0) = com.sun.star.sdbc.DataType.TINYINT ' = -6; WidthList(1,1) = cNumericBox WidthList(1,2) = False WidthList(1,3) = "FormattedField" WidthList(2,0) = com.sun.star.sdbc.DataType.SMALLINT ' = 5; WidthList(2,1) = cNumericBox WidthList(2,2) = False WidthList(2,3) = "FormattedField" WidthList(3,0) = com.sun.star.sdbc.DataType.INTEGER ' = 4; WidthList(3,1) = cNumericBox WidthList(3,2) = False WidthList(3,3) = "FormattedField" WidthList(4,0) = com.sun.star.sdbc.DataType.BIGINT ' = -5; WidthList(4,1) = cNumericBox WidthList(4,2) = False WidthList(4,3) = "FormattedField" WidthList(5,0) = com.sun.star.sdbc.DataType.FLOAT ' = 6; WidthList(5,1) = cNumericBox WidthList(5,2) = False WidthList(5,3) = "FormattedField" WidthList(6,0) = com.sun.star.sdbc.DataType.REAL ' = 7; WidthList(6,1) = cNumericBox WidthList(6,2) = False WidthList(6,3) = "FormattedField" WidthList(7,0) = com.sun.star.sdbc.DataType.DOUBLE ' = 8; WidthList(7,1) = cNumericBox WidthList(7,2) = False WidthList(7,3) = "FormattedField" WidthList(8,0) = com.sun.star.sdbc.DataType.NUMERIC ' = 2; WidthList(8,1) = cNumericBox WidthList(8,2) = False WidthList(8,3) = "FormattedField" WidthList(9,0) = com.sun.star.sdbc.DataType.DECIMAL ' = 3; (mit Nachkommastellen) WidthList(9,1) = cNumericBox WidthList(9,2) = False WidthList(9,3) = "FormattedField" WidthList(10,0) = com.sun.star.sdbc.DataType.CHAR ' = 1; WidthList(10,1) = cTextBox WidthList(10,2) = False WidthList(10,3) = "TextField" ' Todo: Sollte die Feldlänge vielleicht lieber aus den Metadaten ausgelesen werden? WidthList(11,0) = com.sun.star.sdbc.DataType.VARCHAR ' = 12; WidthList(11,1) = cTextBox WidthList(11,2) = True WidthList(11,3) = "TextField" WidthList(12,0) = com.sun.star.sdbc.DataType.LONGVARCHAR ' = -1; WidthList(12,1) = cTextBox WidthList(12,2) = True WidthList(12,3) = "TextField" WidthList(13,0) = com.sun.star.sdbc.DataType.DATE ' = 91; WidthList(13,1) = cDateBox WidthList(13,2) = False WidthList(13,3) = "DateField" WidthList(14,0) = com.sun.star.sdbc.DataType.TIME ' = 92; WidthList(14,1) = cTimeBox WidthList(14,2) = False WidthList(14,3) = "TimeField" WidthList(15,0) = com.sun.star.sdbc.DataType.TIMESTAMP ' = 93; ' Todo: Dieses Control ist keine cDatebox sondern Kollektion aus Time und Datefield WidthList(15,1) = cDateBox WidthList(15,2) = False WidthList(15,3) = "DateField" ImgWidthList(0,0) = com.sun.star.sdbc.DataType.BINARY ' = -2; ImgWidthList(0,1) = cImageControl ImgWidthList(0,2) = False ImgWidthList(0,3) = "ImageControl" ImgWidthList(1,0) = com.sun.star.sdbc.DataType.VARBINARY ' = -3; ImgWidthList(1,1) = cImageControl ImgWidthList(1,2) = False ImgWidthList(1,3) = "ImageControl" ImgWidthList(2,0) = com.sun.star.sdbc.DataType.LONGVARBINARY ' = -4; ImgWidthList(2,1) = cImageControl ImgWidthList(2,2) = False ImgWidthList(2,3) = "ImageControl" ImgWidthList(3,0) = com.sun.star.sdbc.DataType.BLOB ' = 2004; ImgWidthList(3,1) = cImageControl ImgWidthList(3,2) = False ImgWidthList(3,3) = "ImageControl" ' Note: the following Fieldtypes cannot be presented ' Todo: This should be mentioned in the help 'ExcludeList(0) = com.sun.star.sdbc.DataType.SQLNULL 'ExcludeList(1) = com.sun.star.sdbc.DataType.OTHER 'ExcludeList(2) = com.sun.star.sdbc.DataType.OBJECT 'ExcludeList(3) = com.sun.star.sdbc.DataType.DISTINCT 'ExcludeList(4) = com.sun.star.sdbc.DataType.STRUCT 'ExcludeList(5) = com.sun.star.sdbc.DataType.ARRAY 'ExcludeList(6) = com.sun.star.sdbc.DataType.CLOB 'ExcludeList(7) = com.sun.star.sdbc.DataType.REF oModelService(cLabel) = "com.sun.star.form.component.FixedText" oModelService(cTextBox) = "com.sun.star.form.component.TextField" oModelService(cCheckBox) = "com.sun.star.form.component.CheckBox" oModelService(cDateBox) = "com.sun.star.form.component.DateField" oModelService(cTimeBox) = "com.sun.star.form.component.TimeField" oModelService(cNumericBox) = "com.sun.star.form.component.FormattedField" oModelService(cGridControl) = "com.sun.star.form.component.GridControl" oModelService(cImageControl) = "com.sun.star.form.component.DatabaseImageControl" End Sub