home *** CD-ROM | disk | FTP | other *** search
/ com!online 2001 December / COMCD1201.iso / openoffice / f_0177 / Userfields.xba < prev    next >
Encoding:
Extensible Markup Language  |  2001-04-25  |  5.6 KB  |  197 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Userfields" script:language="StarBasic">
  4. Public iUserFieldCount as integer
  5. Public LabelArray(10) as Object
  6. Public EditArray(10) as Object
  7. Public UserFieldName(255) as String
  8. Public UserFieldValue(255) as String
  9. Public oDocument as Object
  10. Public aTextField as Object
  11. Public aTextFieldEnum as Object
  12. Public const MAXFIELDCOUNT = 9
  13. Public UserFieldDataType(14) as String
  14. Public ScrollBarValue as Integer
  15.  
  16. Sub StartChangesUserfields
  17. Dim a as Integer
  18. Dim CurElement, TFMaster as Object
  19.  
  20.         BasicLibraries.LoadLibrary("Tools")
  21.     LoadLanguage(StarDesktop.ISOLocale.Language)
  22.     ScrollBarValue = 0
  23.     UserFieldDatatype(0) = "COMPANY"
  24.     UserFieldDatatype(1) = "FIRSTNAME"
  25.     UserFieldDatatype(2) = "NAME"
  26.     UserFieldDatatype(3) = "SHORTCUT"
  27.     UserFieldDatatype(4) = "STREET"
  28.     UserFieldDatatype(5) = "COUNTRY"
  29.     UserFieldDatatype(6) = "ZIP"
  30.     UserFieldDatatype(7) = "CITY"
  31.     UserFieldDatatype(8) = "TITLE"
  32.     UserFieldDatatype(9) = "POSITION"
  33.     UserFieldDatatype(10) = "PHONE_PRIVATE"
  34.     UserFieldDatatype(11) = "PHONE_COMPANY"
  35.     UserFieldDatatype(12) = "FAX"
  36.     UserFieldDatatype(13) = "EMAIL"
  37.     UserFieldDatatype(14) = "STATE"
  38.  
  39.     On Local Error GoTo NODOCUMENT
  40.     oDocument = StarDesktop.ActiveFrame.Controller.Model
  41.     NODOCUMENT:
  42.     If Err <> 0 Then
  43.         Msgbox(Error$ & "This Macro gives you the opportunity to change all Userfields of a displayed Document." & chr(13) &_
  44.                "To start this macro you have to activate a Document first!" , 16, "StarOffice 5.2")
  45.         Exit Sub
  46.     End If
  47.     On Local Error Goto 0
  48.  
  49.     ' Define TextFields
  50.     aTextfield = oDocument.getTextfields
  51.     aTextFieldEnum = aTextField.CreateEnumeration
  52.     a = 0
  53.     While aTextFieldEnum.hasmoreElements
  54.         CurElement = aTextFieldEnum.NextElement
  55.         If Not IsNull(CurElement) Then
  56.             If CurElement.PropertySetInfo.hasPropertybyName("Content") Then
  57.                 TFMaster = CurElement.TextFieldMaster
  58.                 a = a + 1
  59.                 If a >= 255 Then
  60.                     MsgBox ErrorMsg1, 0 + 16, ErrorHeader
  61.                     Exit Sub
  62.                 End If
  63.                 UserFieldName(a) = UserFieldDataType(CurElement.UserDataType)
  64.                 UserFieldValue(a) = CurElement.Content
  65.             End If
  66.         End If
  67.     Wend
  68.     iUserFieldCount = a
  69.     If iUserFieldCount = 0 Then
  70.         MsgBox ErrorMsg2, 0+48, ErrorHeader
  71.         Exit Sub
  72.     End If
  73.  
  74.     UserfieldDlg.Load
  75.  
  76.     Call SetControlArray()
  77.     Call FillDialog()
  78.  
  79.     UserFieldDlg.Show
  80. End Sub
  81.  
  82.  
  83.  
  84. Sub FillDialog()
  85. Dim a as Integer
  86.     Call SetDialogText
  87.     For a = 1 To MaxFieldCount
  88.         If a <= iUserFieldCount Then
  89.             LabelArray(a).Caption = UserFieldName(a)
  90.             EditArray(a).Text = UserFieldValue(a)
  91.         Else
  92.             LabelArray(a).Caption = ""
  93.             EditArray(a).Text = ""
  94.             LabelArray(a).Enabled = False
  95.             EditArray(a).Enabled = false
  96.         End If
  97.     Next a
  98.  
  99.     If iUserFieldCount > MaxFieldCount Then
  100.         UserfieldDlg.VScrollbar.Min = 0
  101.         UserfieldDlg.VScrollbar.Max = iUserFieldCount-MaxFieldCount
  102.         UserfieldDlg.VScrollbar.LargeChange = MaxFieldCount
  103.         UserfieldDlg.VScrollbar.SmallChange = 1
  104.     Else
  105.         UserfieldDlg.VScrollbar.enabled = False
  106.     End If
  107.  
  108. End Sub
  109.  
  110.  
  111.  
  112. Sub Dlg_Scroll(ScrollValue)
  113.     Call ChangeArray(ScrollBarValue)
  114.     ScrollBarValue = UserfieldDlg.VScrollbar.Value
  115.     If (ScrollBarValue + MaxFieldCount) > iUserFieldCount Then
  116.         ScrollBarValue = iUserFieldCount - MaxFieldCount
  117.     End If
  118.  
  119.     For a = 1 To MaxFieldCount
  120.         LabelArray(a).Caption = UserFieldName(a + ScrollBarValue)
  121.         EditArray(a).Text = UserFieldValue(a + ScrollBarValue)
  122.     Next a
  123. End Sub
  124.  
  125.  
  126. Sub ChangeArray(ByVal ScrollBarValue)
  127. Dim a as Integer
  128.     For a = 1 To MaxFieldCount
  129.         UserFieldValue(a + ScrollBarValue) = EditArray(a).Text
  130.     Next a
  131. End Sub
  132.  
  133.  
  134. Sub Cancel_Click
  135.     UserfieldDlg.Hide
  136. End Sub
  137.  
  138.  
  139. Sub Save_Click
  140. Dim i as Integer
  141. Dim CurElement, TFMaster as Object
  142.  
  143.     UserfieldDlg.CancelChanges.Enabled = false
  144.     UserfieldDlg.SaveChanges.Enabled = false
  145.  
  146.     ChangeArray(UserfieldDlg.VScrollbar.Value)
  147.  
  148.     aTextfield = oDocument.getTextfields
  149.     aTextFieldEnum = aTextField.CreateEnumeration
  150.     i = 1
  151.     While aTextFieldEnum.hasmoreElements
  152.         CurElement = aTextFieldEnum.NextElement
  153.         If Not IsNull(CurElement) Then
  154.             If Curelement.PropertySetInfo.hasPropertybyName("Content") Then
  155.                 If CurElement.Content <> UserFieldValue(i) Then
  156.                     CurElement.Content = UserFieldValue(i)
  157.                 End If
  158.                 i = i  + 1
  159.             End If
  160.         End If
  161.     Wend
  162.     aTextField.Refresh
  163.     UserfieldDlg.Hide
  164. End Sub
  165.  
  166.  
  167.  
  168. Sub SetControlArray()
  169.     Set LabelArray(1) = UserfieldDlg.Label1
  170.     Set EditArray(1) = UserfieldDlg.Textbox1
  171.     Set LabelArray(2) = UserfieldDlg.Label2
  172.     Set EditArray(2) = UserfieldDlg.Textbox2
  173.     Set LabelArray(3) = UserfieldDlg.Label3
  174.     Set EditArray(3) = UserfieldDlg.Textbox3
  175.     Set LabelArray(4) = UserfieldDlg.Label4
  176.     Set EditArray(4) = UserfieldDlg.Textbox4
  177.     Set LabelArray(5) = UserfieldDlg.Label5
  178.     Set EditArray(5) = UserfieldDlg.Textbox5
  179.     Set LabelArray(6) = UserfieldDlg.Label6
  180.     Set EditArray(6) = UserfieldDlg.Textbox6
  181.     Set LabelArray(7) = UserfieldDlg.Label7
  182.     Set EditArray(7) = UserfieldDlg.Textbox7
  183.     Set LabelArray(8) = UserfieldDlg.Label8
  184.     Set EditArray(8) = UserfieldDlg.Textbox8
  185.     Set LabelArray(9) = UserfieldDlg.Label9
  186.     Set EditArray(9) = UserfieldDlg.Textbox9
  187. End Sub
  188.  
  189.  
  190. Sub SetDialogText
  191.     UserfieldDlg.caption = HeaderLabel
  192.     UserfieldDlg.HeaderLabel.Caption = HeaderLabel
  193.     UserfieldDlg.CancelChanges.Caption = CancelButton
  194.     UserfieldDlg.SaveChanges.Caption = SaveButton
  195. End Sub
  196. </script:module>
  197.