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