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 ' Internal Logic Dim Form_ilFormTitleSuggestPrefix as String Dim sMsgDatetime_DateComponent as String Dim sMsgDatetime_TimeComponent as String Public sGoOn as String Public sReady as String Public sMsgNoConnection as String Public sReduceDialog as String Public sHeightenDialog as String Public sWriterFilterName as String Public sWriterTemplateFiltername as String 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) sMsgDatetime_DateComponent = GetResText(RID_FORM + 4) sMsgDatetime_TimeComponent = 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_COMMON + 4) .lblTables.Label = GetResText(RID_FORM + 11) .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) .cmdAlign0.ImageURL = FormPath & "Align_0.bmp" .cmdAlign0.HelpText = GetResText(RID_FORM + 33) .cmdAlign2.ImageURL = FormPath & "Align_2.bmp" .cmdAlign2.HelpText = GetResText(RID_FORM + 34) .cmdBorder0.ImageURL = FormPath & "Border_0.bmp" .cmdBorder0.HelpText = GetResText(RID_FORM + 29) .cmdBorder1.ImageURL = FormPath & "Border_1.bmp" .cmdBorder1.HelpText = GetResText(RID_FORM + 30) .cmdBorder2.ImageURL = FormPath & "Border_2.bmp" .cmdBorder2.HelpText = GetResText(RID_FORM + 31) .cmdArrange1.ImageURL = FormPath & "Arrange_1.bmp" .cmdArrange1.HelpText = GetResText(RID_FORM + 36) .cmdArrange2.ImageURL = FormPath & "Arrange_2.bmp" .cmdArrange2.HelpText = GetResText(RID_FORM + 37) .cmdArrange3.ImageURL = FormPath & "Arrange_3.bmp" .cmdArrange3.HelpText = GetResText(RID_FORM + 40) .cmdArrange4.ImageURL = FormPath & "Arrange_4.bmp" .cmdArrange4.HelpText = GetResText(RID_FORM + 38) .cmdArrange5.ImageURL = FormPath & "Arrange_5.bmp" .cmdArrange5.HelpText = GetResText(RID_FORM + 39) sHeightenDialog = GetResText(RID_FORM + 66) sReduceDialog = GetResText(RID_FORM + 65) .cmdSwitchHeight.HelpText = sReduceDialog .cmdSwitchHeight.Label = CHR(9653) 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. WidthList(0,0) = com.sun.star.sdbc.DataType.BIT ' = -7; WidthList(0,1) = 5 WidthList(0,2) = cCheckbox WidthList(0,3) = False WidthList(0,4) = "CheckBox" WidthList(1,0) = com.sun.star.sdbc.DataType.TINYINT ' = -6; WidthList(1,1) = 4 WidthList(1,2) = cNumericBox WidthList(1,3) = False WidthList(1,4) = "FormattedField" WidthList(2,0) = com.sun.star.sdbc.DataType.SMALLINT ' = 5; WidthList(2,1) = 4 WidthList(2,2) = cNumericBox WidthList(2,3) = False WidthList(2,4) = "FormattedField" WidthList(3,0) = com.sun.star.sdbc.DataType.INTEGER ' = 4; WidthList(3,1) = 6 WidthList(3,2) = cNumericBox WidthList(3,3) = False WidthList(3,4) = "FormattedField" WidthList(4,0) = com.sun.star.sdbc.DataType.BIGINT ' = -5; WidthList(4,1) = 11 WidthList(4,2) = cNumericBox WidthList(4,3) = False WidthList(4,4) = "FormattedField" WidthList(5,0) = com.sun.star.sdbc.DataType.FLOAT ' = 6; WidthList(5,1) = 21 WidthList(5,2) = cNumericBox WidthList(5,3) = False WidthList(5,4) = "FormattedField" WidthList(6,0) = com.sun.star.sdbc.DataType.REAL ' = 7; WidthList(6,1) = 21 'Property 'Scale', keine maximalwerte WidthList(6,2) = cNumericBox WidthList(6,3) = False WidthList(6,4) = "FormattedField" WidthList(7,0) = com.sun.star.sdbc.DataType.DOUBLE ' = 8; WidthList(7,1) = 21 ' dynamisch erstellen 'Property 'Scale' WidthList(7,2) = cNumericBox WidthList(7,3) = False WidthList(7,4) = "FormattedField" WidthList(8,0) = com.sun.star.sdbc.DataType.NUMERIC ' = 2; WidthList(8,1) = 21 WidthList(8,2) = cNumericBox WidthList(8,3) = False WidthList(8,4) = "FormattedField" WidthList(9,0) = com.sun.star.sdbc.DataType.DECIMAL ' = 3; (mit Nachkommastellen) WidthList(9,1) = 10 ' ToDo: Dies muss in einer Routine errechnet werden WidthList(9,2) = cNumericBox WidthList(9,3) = False WidthList(9,4) = "FormattedField" WidthList(10,0) = com.sun.star.sdbc.DataType.CHAR ' = 1; WidthList(10,1) = 3 WidthList(10,2) = cTextBox WidthList(10,3) = False WidthList(10,4) = "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) = 20 WidthList(11,2) = cTextBox WidthList(11,3) = True WidthList(11,4) = "TextField" WidthList(12,0) = com.sun.star.sdbc.DataType.LONGVARCHAR ' = -1; WidthList(12,1) = 20 WidthList(12,2) = cTextBox WidthList(12,3) = True WidthList(12,4) = "TextField" WidthList(13,0) = com.sun.star.sdbc.DataType.DATE ' = 91; WidthList(13,1) = 12 WidthList(13,2) = cDateBox WidthList(13,3) = False WidthList(13,4) = "DateField" WidthList(14,0) = com.sun.star.sdbc.DataType.TIME ' = 92; WidthList(14,1) = 11 WidthList(14,2) = cTimeBox WidthList(14,3) = False WidthList(14,4) = "TimeField" ' Todo: Die folgenden Felder auffüllen! WidthList(15,0) = com.sun.star.sdbc.DataType.TIMESTAMP ' = 93; WidthList(15,1) = 20 ' Todo: Dieses Control ist keine cDatebox sondern Kollektion aus Time und Datefield WidthList(15,2) = cDateBox WidthList(15,3) = False WidthList(15,4) = "DateField" ImgWidthList(0,0) = com.sun.star.sdbc.DataType.BINARY ' = -2; ImgWidthList(0,1) = 1000 ImgWidthList(0,2) = cImageControl ImgWidthList(0,3) = False ImgWidthList(0,4) = "ImageControl" ImgWidthList(1,0) = com.sun.star.sdbc.DataType.VARBINARY ' = -3; ImgWidthList(1,1) = 1000 ImgWidthList(1,2) = cImageControl ImgWidthList(1,3) = False ImgWidthList(1,4) = "ImageControl" ImgWidthList(2,0) = com.sun.star.sdbc.DataType.LONGVARBINARY ' = -4; ImgWidthList(2,1) = 1000 ImgWidthList(2,2) = cImageControl ImgWidthList(2,3) = False ImgWidthList(2,4) = "ImageControl" ImgWidthList(3,0) = com.sun.star.sdbc.DataType.BLOB ' = 2004; ImgWidthList(3,1) = 1000 ImgWidthList(3,2) = cImageControl ImgWidthList(3,3) = False ImgWidthList(3,4) = "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