1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Listbox" script:language="StarBasic">Option Explicit 24*b1cdbd2cSJim JagielskiDim OriginalList() 25*b1cdbd2cSJim JagielskiDim oDialogModel as Object 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim JagielskiSub MergeList(SourceListBox() as Object, SecondList() as String) 29*b1cdbd2cSJim JagielskiDim i as Integer 30*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 31*b1cdbd2cSJim Jagielski MaxIndex = Ubound(SecondList()) 32*b1cdbd2cSJim Jagielski OriginalList() = AddListToList(OriginalList(), SecondList()) 33*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 34*b1cdbd2cSJim Jagielski SourceListbox = AddSingleItemToListbox(SourceListbox, SecondList(i)) 35*b1cdbd2cSJim Jagielski Next i 36*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 37*b1cdbd2cSJim JagielskiEnd Sub 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim JagielskiSub RemoveListItems(SourceListbox as Object, TargetListbox as Object, RemoveList() as String) 41*b1cdbd2cSJim JagielskiDim i as Integer 42*b1cdbd2cSJim JagielskiDim s as Integer 43*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 44*b1cdbd2cSJim JagielskiDim CopyList() 45*b1cdbd2cSJim Jagielski MaxIndex = Ubound(RemoveList()) 46*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 47*b1cdbd2cSJim Jagielski RemoveListboxItemByName(SourceListbox, RemoveList(i)) 48*b1cdbd2cSJim Jagielski RemoveListboxItemByName(TargetListbox, RemoveList(i)) 49*b1cdbd2cSJim Jagielski Next i 50*b1cdbd2cSJim Jagielski CopyList() = OriginalList() 51*b1cdbd2cSJim Jagielski s = 0 52*b1cdbd2cSJim Jagielski MaxIndex = Ubound(CopyList()) 53*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 54*b1cdbd2cSJim Jagielski If IndexInArray(CopyList(i),RemoveList())= -1 Then 55*b1cdbd2cSJim Jagielski OriginalList(s) = CopyList(i) 56*b1cdbd2cSJim Jagielski s = s + 1 57*b1cdbd2cSJim Jagielski End If 58*b1cdbd2cSJim Jagielski Next i 59*b1cdbd2cSJim Jagielski ReDim Preserve OriginalList(s-1) 60*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 61*b1cdbd2cSJim JagielskiEnd Sub 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski' Note Boolean Parameter 65*b1cdbd2cSJim JagielskiSub InitializeListboxProcedures(oModel as Object, SourceListbox as Object, TargetListbox as Object) 66*b1cdbd2cSJim JagielskiDim EmptyList() 67*b1cdbd2cSJim Jagielski Set oDialogModel = oModel 68*b1cdbd2cSJim Jagielski OriginalList()= SourceListbox.StringItemList() 69*b1cdbd2cSJim Jagielski TargetListbox.StringItemList() = EmptyList() 70*b1cdbd2cSJim JagielskiEnd Sub 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim JagielskiSub CopyListboxItems(SourceListbox as Object, TargetListbox As Object) 74*b1cdbd2cSJim JagielskiDim NullArray() 75*b1cdbd2cSJim Jagielski TargetListbox.StringItemList() = OriginalList() 76*b1cdbd2cSJim Jagielski SourceListbox.StringItemList() = NullArray() 77*b1cdbd2cSJim JagielskiEnd Sub 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim JagielskiSub FormMoveSelected() 81*b1cdbd2cSJim Jagielski Call MoveSelectedListBox(oDialogModel.lstFields, oDialogModel.lstSelFields) 82*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 83*b1cdbd2cSJim Jagielski oDialogModel.lstSelFields.Tag = True 84*b1cdbd2cSJim JagielskiEnd Sub 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim JagielskiSub FormMoveAll() 88*b1cdbd2cSJim Jagielski Call CopyListboxItems(oDialogModel.lstFields, oDialogModel.lstSelFields) 89*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 90*b1cdbd2cSJim Jagielski oDialogModel.lstSelFields.Tag = True 91*b1cdbd2cSJim JagielskiEnd Sub 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim JagielskiSub FormRemoveSelected() 95*b1cdbd2cSJim Jagielski Call MoveOrderedSelectedListbox(oDialogModel.lstFields, oDialogModel.lstSelFields, False) 96*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 97*b1cdbd2cSJim Jagielski oDialogModel.lstSelFields.Tag = True 98*b1cdbd2cSJim JagielskiEnd Sub 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim JagielskiSub FormRemoveAll() 102*b1cdbd2cSJim Jagielski Call MoveOrderedSelectedListbox(oDialogModel.lstFields, oDialogModel.lstSelFields, True) 103*b1cdbd2cSJim Jagielski Call FormSetMoveRights() 104*b1cdbd2cSJim Jagielski oDialogModel.lstSelFields.Tag = 1 105*b1cdbd2cSJim JagielskiEnd Sub 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim JagielskiSub MoveSelectedListBox(SourceListbox as Object, TargetListbox as Object) 109*b1cdbd2cSJim JagielskiDim MaxCurTarget as Integer 110*b1cdbd2cSJim JagielskiDim MaxSourceSelected as Integer 111*b1cdbd2cSJim JagielskiDim n as Integer 112*b1cdbd2cSJim JagielskiDim m as Integer 113*b1cdbd2cSJim JagielskiDim CurIndex 114*b1cdbd2cSJim JagielskiDim iOldTargetSelect as Integer 115*b1cdbd2cSJim JagielskiDim iOldSourceSelect as Integer 116*b1cdbd2cSJim Jagielski MaxCurTarget = Ubound(TargetListbox.StringItemList()) 117*b1cdbd2cSJim Jagielski MaxSourceSelected = Ubound(SourceListbox.SelectedItems()) 118*b1cdbd2cSJim Jagielski Dim TargetList(MaxCurTarget+MaxSourceSelected+1) 119*b1cdbd2cSJim Jagielski If MaxSourceSelected > -1 Then 120*b1cdbd2cSJim Jagielski iOldSourceSelect = SourceListbox.SelectedItems(0) 121*b1cdbd2cSJim Jagielski If Ubound(TargetListbox.SelectedItems()) > -1 Then 122*b1cdbd2cSJim Jagielski iOldTargetSelect = TargetListbox.SelectedItems(0) 123*b1cdbd2cSJim Jagielski Else 124*b1cdbd2cSJim Jagielski iOldTargetSelect = -1 125*b1cdbd2cSJim Jagielski End If 126*b1cdbd2cSJim Jagielski For n = 0 To MaxCurTarget 127*b1cdbd2cSJim Jagielski TargetList(n) = TargetListbox.StringItemList(n) 128*b1cdbd2cSJim Jagielski Next n 129*b1cdbd2cSJim Jagielski For m = 0 To MaxSourceSelected 130*b1cdbd2cSJim Jagielski CurIndex = SourceListbox.SelectedItems(m) 131*b1cdbd2cSJim Jagielski TargetList(n) = SourceListbox.StringItemList(CurIndex) 132*b1cdbd2cSJim Jagielski n = n + 1 133*b1cdbd2cSJim Jagielski Next m 134*b1cdbd2cSJim Jagielski TargetListBox.StringItemList() = TargetList() 135*b1cdbd2cSJim Jagielski SourceListbox.StringItemList() = RemoveSelected (SourceListbox) 136*b1cdbd2cSJim Jagielski SetNewSelection(SourceListbox, iOldSourceSelect) 137*b1cdbd2cSJim Jagielski SetNewSelection(TargetListbox, iOldTargetSelect) 138*b1cdbd2cSJim Jagielski End If 139*b1cdbd2cSJim JagielskiEnd Sub 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim JagielskiSub MoveOrderedSelectedListbox(lstSource as Object, lstTarget as Object, bMoveAll as Boolean) 144*b1cdbd2cSJim JagielskiDim NullArray() 145*b1cdbd2cSJim JagielskiDim MaxSelected as Integer 146*b1cdbd2cSJim JagielskiDim MaxSourceIndex as Integer 147*b1cdbd2cSJim JagielskiDim MaxOriginalIndex as Integer 148*b1cdbd2cSJim JagielskiDim MaxNewIndex as Integer 149*b1cdbd2cSJim JagielskiDim n as Integer 150*b1cdbd2cSJim JagielskiDim m as Integer 151*b1cdbd2cSJim JagielskiDim CurIndex as Integer 152*b1cdbd2cSJim JagielskiDim SearchString as String 153*b1cdbd2cSJim JagielskiDim SourceList() as String 154*b1cdbd2cSJim JagielskiDim iOldTargetSelect as Integer 155*b1cdbd2cSJim JagielskiDim iOldSourceSelect as Integer 156*b1cdbd2cSJim Jagielski If bMoveAll Then 157*b1cdbd2cSJim Jagielski lstSource.StringItemList() = OriginalList() 158*b1cdbd2cSJim Jagielski lstTarget.StringItemList() = NullArray() 159*b1cdbd2cSJim Jagielski Else 160*b1cdbd2cSJim Jagielski MaxOriginalIndex = Ubound(OriginalList()) 161*b1cdbd2cSJim Jagielski MaxSelected = Ubound(lstTarget.SelectedItems()) 162*b1cdbd2cSJim Jagielski iOldTargetSelect = lstTarget.SelectedItems(0) 163*b1cdbd2cSJim Jagielski If Ubound(lstSource.SelectedItems()) > -1 Then 164*b1cdbd2cSJim Jagielski iOldSourceSelect = lstSource.SelectedItems(0) 165*b1cdbd2cSJim Jagielski End If 166*b1cdbd2cSJim Jagielski Dim SelList(MaxSelected) 167*b1cdbd2cSJim Jagielski For n = 0 To MaxSelected 168*b1cdbd2cSJim Jagielski CurIndex = lstTarget.SelectedItems(n) 169*b1cdbd2cSJim Jagielski SelList(n) = lstTarget.StringItemList(CurIndex) 170*b1cdbd2cSJim Jagielski Next n 171*b1cdbd2cSJim Jagielski SourceList() = lstSource.StringItemList() 172*b1cdbd2cSJim Jagielski MaxSourceIndex = Ubound(lstSource.StringItemList()) 173*b1cdbd2cSJim Jagielski MaxNewIndex = MaxSelected + MaxSourceIndex + 1 174*b1cdbd2cSJim Jagielski Dim NewSourceList(MaxNewIndex) 175*b1cdbd2cSJim Jagielski m = 0 176*b1cdbd2cSJim Jagielski For n = 0 To MaxOriginalIndex 177*b1cdbd2cSJim Jagielski SearchString = OriginalList(n) 178*b1cdbd2cSJim Jagielski If IndexinArray(SearchString, SelList()) <> -1 Then 179*b1cdbd2cSJim Jagielski NewSourceList(m) = SearchString 180*b1cdbd2cSJim Jagielski m = m + 1 181*b1cdbd2cSJim Jagielski ElseIf IndexinArray(SearchString, SourceList()) <> -1 Then 182*b1cdbd2cSJim Jagielski NewSourceList(m) = SearchString 183*b1cdbd2cSJim Jagielski m = m + 1 184*b1cdbd2cSJim Jagielski End If 185*b1cdbd2cSJim Jagielski Next n 186*b1cdbd2cSJim Jagielski lstSource.StringItemList() = NewSourceList() 187*b1cdbd2cSJim Jagielski lstTarget.StringItemList() = RemoveSelected(lstTarget) 188*b1cdbd2cSJim Jagielski End If 189*b1cdbd2cSJim Jagielski SetNewSelection(lstSource, iOldSourceSelect) 190*b1cdbd2cSJim Jagielski SetNewSelection(lstTarget, iOldTargetSelect) 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim JagielskiEnd Sub 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim JagielskiFunction RemoveSelected(oListbox as Object) 196*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 197*b1cdbd2cSJim JagielskiDim MaxSelected as Integer 198*b1cdbd2cSJim JagielskiDim n as Integer 199*b1cdbd2cSJim JagielskiDim m as Integer 200*b1cdbd2cSJim JagielskiDim CurIndex as Integer 201*b1cdbd2cSJim JagielskiDim CurItem as String 202*b1cdbd2cSJim JagielskiDim ResultArray() 203*b1cdbd2cSJim Jagielski MaxIndex = Ubound(oListbox.StringItemList()) 204*b1cdbd2cSJim Jagielski MaxSelected = Ubound(oListbox.SelectedItems()) 205*b1cdbd2cSJim Jagielski Dim LocItemList(MaxIndex) 206*b1cdbd2cSJim Jagielski LocItemList() = oListbox.StringItemList() 207*b1cdbd2cSJim Jagielski If MaxSelected > -1 Then 208*b1cdbd2cSJim Jagielski For n = 0 To MaxSelected 209*b1cdbd2cSJim Jagielski CurIndex = oListbox.SelectedItems(n) 210*b1cdbd2cSJim Jagielski LocItemList(CurIndex) = "" 211*b1cdbd2cSJim Jagielski Next n 212*b1cdbd2cSJim Jagielski If MaxIndex > 0 Then 213*b1cdbd2cSJim Jagielski ReDim ResultArray(MaxIndex - MaxSelected - 1) 214*b1cdbd2cSJim Jagielski m = 0 215*b1cdbd2cSJim Jagielski For n = 0 To MaxIndex 216*b1cdbd2cSJim Jagielski CurItem = LocItemList(n) 217*b1cdbd2cSJim Jagielski If CurItem <> "" Then 218*b1cdbd2cSJim Jagielski ResultArray(m) = CurItem 219*b1cdbd2cSJim Jagielski m = m + 1 220*b1cdbd2cSJim Jagielski End If 221*b1cdbd2cSJim Jagielski Next n 222*b1cdbd2cSJim Jagielski End If 223*b1cdbd2cSJim Jagielski RemoveSelected = ResultArray() 224*b1cdbd2cSJim Jagielski Else 225*b1cdbd2cSJim Jagielski RemoveSelected = oListbox.StringItemList() 226*b1cdbd2cSJim Jagielski End If 227*b1cdbd2cSJim JagielskiEnd Function 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim JagielskiSub SetNewSelection(oListBox as Object, iLastSelection as Integer) 231*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 232*b1cdbd2cSJim JagielskiDim SelIndex as Integer 233*b1cdbd2cSJim JagielskiDim SelList(0) as Integer 234*b1cdbd2cSJim Jagielski MaxIndex = Ubound(oListBox.StringItemList()) 235*b1cdbd2cSJim Jagielski If MaxIndex > -1 AND iLastSelection > -1 Then 236*b1cdbd2cSJim Jagielski If iLastSelection > MaxIndex Then 237*b1cdbd2cSJim Jagielski Selindex = MaxIndex 238*b1cdbd2cSJim Jagielski Else 239*b1cdbd2cSJim Jagielski SelIndex = iLastSelection 240*b1cdbd2cSJim Jagielski End If 241*b1cdbd2cSJim Jagielski Sellist(0) = SelIndex 242*b1cdbd2cSJim Jagielski oListBox.SelectedItems() = SelList() 243*b1cdbd2cSJim Jagielski End If 244*b1cdbd2cSJim JagielskiEnd Sub 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski 247*b1cdbd2cSJim JagielskiSub ToggleListboxControls(oDialogModel as Object, bDoEnable as Boolean) 248*b1cdbd2cSJim Jagielski With oDialogModel 249*b1cdbd2cSJim Jagielski .lblFields.Enabled = bDoEnable 250*b1cdbd2cSJim Jagielski .lblSelFields.Enabled = bDoEnable 251*b1cdbd2cSJim Jagielski' .lstTables.Enabled = bDoEnable 252*b1cdbd2cSJim Jagielski .lstFields.Enabled = bDoEnable 253*b1cdbd2cSJim Jagielski .lstSelFields.Enabled = bDoEnable 254*b1cdbd2cSJim Jagielski .cmdRemoveAll.Enabled = bDoEnable 255*b1cdbd2cSJim Jagielski .cmdRemoveSelected.Enabled = bDoEnable 256*b1cdbd2cSJim Jagielski .cmdMoveAll.Enabled = bDoEnable 257*b1cdbd2cSJim Jagielski .cmdMoveSelected.Enabled = bDoEnable 258*b1cdbd2cSJim Jagielski End With 259*b1cdbd2cSJim Jagielski If bDoEnable Then 260*b1cdbd2cSJim Jagielski FormSetMoveRights() 261*b1cdbd2cSJim Jagielski End If 262*b1cdbd2cSJim JagielskiEnd Sub 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski 265*b1cdbd2cSJim Jagielski' Enable or disable the buttons used for moving the available 266*b1cdbd2cSJim Jagielski' fields between the two list boxes. 267*b1cdbd2cSJim JagielskiSub FormSetMoveRights() 268*b1cdbd2cSJim JagielskiDim bIsFieldSelected as Boolean 269*b1cdbd2cSJim JagielskiDim bSelectSelected as Boolean 270*b1cdbd2cSJim JagielskiDim FieldCount as Integer 271*b1cdbd2cSJim JagielskiDim SelectCount as Integer 272*b1cdbd2cSJim Jagielski bIsFieldSelected = Ubound(oDialogModel.lstFields.SelectedItems()) <> -1 273*b1cdbd2cSJim Jagielski FieldCount = Ubound(oDialogModel.lstFields.StringItemList()) + 1 274*b1cdbd2cSJim Jagielski bSelectSelected = Ubound(oDialogModel.lstSelFields.SelectedItems()) > -1 275*b1cdbd2cSJim Jagielski SelectCount = Ubound(oDialogModel.lstSelFields.StringItemList()) + 1 276*b1cdbd2cSJim Jagielski oDialogModel.cmdRemoveAll.Enabled = SelectCount>=1 277*b1cdbd2cSJim Jagielski oDialogModel.cmdRemoveSelected.Enabled = bSelectSelected 278*b1cdbd2cSJim Jagielski oDialogModel.cmdMoveAll.Enabled = FieldCount >=1 279*b1cdbd2cSJim Jagielski oDialogModel.cmdMoveSelected.Enabled = bIsFieldSelected 280*b1cdbd2cSJim Jagielski oDialogModel.cmdGoOn.Enabled = SelectCount>=1 281*b1cdbd2cSJim Jagielski ' This flag is set to '1' when the lstSelFields has been modified 282*b1cdbd2cSJim JagielskiEnd Sub 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim JagielskiFunction AddSingleItemToListbox(ByVal oListbox as Object, ListItem as String, Optional iSelIndex) as Object 286*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 287*b1cdbd2cSJim JagielskiDim i as Integer 288*b1cdbd2cSJim Jagielski 289*b1cdbd2cSJim Jagielski MaxIndex = Ubound(oListbox.StringItemList()) 290*b1cdbd2cSJim JagielskiDim LocList(MaxIndex + 1) 291*b1cdbd2cSJim Jagielski' Todo: This goes faster with the Redim LocList(MaxIndex + 1) Preserve function 292*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 293*b1cdbd2cSJim Jagielski LocList(i) = oListbox.StringItemList(i) 294*b1cdbd2cSJim Jagielski Next i 295*b1cdbd2cSJim Jagielski LocList(MaxIndex + 1) = ListItem 296*b1cdbd2cSJim Jagielski oListbox.StringItemList() = LocList() 297*b1cdbd2cSJim Jagielski If Not IsMissing(iSelIndex) Then 298*b1cdbd2cSJim Jagielski SelectListboxItem(oListbox, iSelIndex) 299*b1cdbd2cSJim Jagielski End If 300*b1cdbd2cSJim Jagielski AddSingleItemToListbox() = oListbox 301*b1cdbd2cSJim JagielskiEnd Function 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim JagielskiSub EmptyListbox(oListbox as Object) 305*b1cdbd2cSJim JagielskiDim NullList() as String 306*b1cdbd2cSJim Jagielski oListbox.StringItemList() = NullList() 307*b1cdbd2cSJim JagielskiEnd Sub 308*b1cdbd2cSJim Jagielski 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim JagielskiSub SelectListboxItem(oListbox as Object, iSelIndex as Integer) 311*b1cdbd2cSJim JagielskiDim LocSelList(0) as Integer 312*b1cdbd2cSJim Jagielski If iSelIndex <> -1 Then 313*b1cdbd2cSJim Jagielski LocSelList(0) = iSelIndex 314*b1cdbd2cSJim Jagielski oListbox.SelectedItems() = LocSelList() 315*b1cdbd2cSJim Jagielski End If 316*b1cdbd2cSJim JagielskiEnd Sub 317*b1cdbd2cSJim Jagielski 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim JagielskiFunction GetSelectedListboxItems(oListbox as Object) 320*b1cdbd2cSJim JagielskiDim SelList(Ubound(oListBox.SelectedItems())) as String 321*b1cdbd2cSJim JagielskiDim i as Integer 322*b1cdbd2cSJim JagielskiDim CurIndex as Integer 323*b1cdbd2cSJim Jagielski For i = 0 To Ubound(oListbox.SelectedItems()) 324*b1cdbd2cSJim Jagielski CurIndex = oListbox.SelectedItems(i) 325*b1cdbd2cSJim Jagielski SelList(i) = oListbox.StringItemList(CurIndex) 326*b1cdbd2cSJim Jagielski Next i 327*b1cdbd2cSJim Jagielski GetSelectedListboxItems() = SelList() 328*b1cdbd2cSJim JagielskiEnd Function 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski 331*b1cdbd2cSJim Jagielski' Note: When using this Sub it must be ensured that the 332*b1cdbd2cSJim Jagielski' 'RemoveItem' appears only only once in the Listbox 333*b1cdbd2cSJim JagielskiSub RemoveListboxItemByName(oListbox as Object, RemoveItem as String) 334*b1cdbd2cSJim JagielskiDim OldList() as String 335*b1cdbd2cSJim JagielskiDim NullList() as String 336*b1cdbd2cSJim JagielskiDim i as Integer 337*b1cdbd2cSJim JagielskiDim a as Integer 338*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 339*b1cdbd2cSJim Jagielski OldList = oListbox.StringItemList() 340*b1cdbd2cSJim Jagielski MaxIndex = Ubound(OldList()) 341*b1cdbd2cSJim Jagielski If IndexInArray(RemoveItem, OldList()) <> -1 Then 342*b1cdbd2cSJim Jagielski If MaxIndex > 0 Then 343*b1cdbd2cSJim Jagielski a = 0 344*b1cdbd2cSJim Jagielski Dim NewList(MaxIndex -1) 345*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 346*b1cdbd2cSJim Jagielski If RemoveItem <> OldList(i) Then 347*b1cdbd2cSJim Jagielski NewList(a) = OldList(i) 348*b1cdbd2cSJim Jagielski a = a + 1 349*b1cdbd2cSJim Jagielski End If 350*b1cdbd2cSJim Jagielski Next i 351*b1cdbd2cSJim Jagielski oListbox.StringItemList() = NewList() 352*b1cdbd2cSJim Jagielski Else 353*b1cdbd2cSJim Jagielski oListBox.StringItemList() = NullList() 354*b1cdbd2cSJim Jagielski End If 355*b1cdbd2cSJim Jagielski End If 356*b1cdbd2cSJim JagielskiEnd Sub 357*b1cdbd2cSJim Jagielski 358*b1cdbd2cSJim Jagielski 359*b1cdbd2cSJim JagielskiFunction GetItemPos(oListBox as Object, sItem as String) 360*b1cdbd2cSJim JagielskiDim ItemList() 361*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 362*b1cdbd2cSJim JagielskiDim i as Integer 363*b1cdbd2cSJim Jagielski ItemList() = oListBox.StringItemList() 364*b1cdbd2cSJim Jagielski MaxIndex = Ubound(ItemList()) 365*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 366*b1cdbd2cSJim Jagielski If sItem = ItemList(i) Then 367*b1cdbd2cSJim Jagielski GetItemPos() = i 368*b1cdbd2cSJim Jagielski Exit Function 369*b1cdbd2cSJim Jagielski End If 370*b1cdbd2cSJim Jagielski Next i 371*b1cdbd2cSJim Jagielski GetItemPos() = -1 372*b1cdbd2cSJim JagielskiEnd Function 373*b1cdbd2cSJim Jagielski</script:module> 374