WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Dialogs

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Tree Control in Dialog


TREEVIEW.WBT

; Revision 2: 4/1/2006 by Stan
;             added Constants and SendMessage() calls to
;             create background color for the tree control
;
;             removed IntControl(49,3,0,0,0)
;             added Exit right click menu - if clicked on node
;             also added code to remove a node
; Thanks to George for his contributions!!!!
;//////////////////////////////////////////////////////////////
; REVISED: Mon 2/27/2006 10:28:40 PM by gwv
; COMMENT: Revised menu code to use one procedure for displaying the menu.
;          udfPopupMenu(Choices, hWnd) allows more flexibility for generating the menu
;          items.  e.g. you could generate a different menu depending on the node level.

; REVISED: Mon 2/27/2006 12:50:13 AM by gwv
; COMMENT: Added code to convert mouse coordinates to twips and allow resizing of the
;          treeview control.  Changed menu code so it would dismiss normally.

;////////////////////////////////////////////////////////////
;Winbatch 2006A - Treeview Control Test App
;                 uses Tview.xls - previously uploaded
;
;added code from George to make dialog re-sizeable
;
;Trying to create context menu if right-click on node
;
;Stan Littlefield - February 26, 2006
;////////////////////////////////////////////////////////////

IntControl(49,3,0,0,0)
GoSub udfs
cXML = StrCat(DirScript(),"Countries.xml")
If !FileExist(cXML) Then Exit

Gdi32 = StrCat(DirWindows(1), 'Gdi32.dll')
hDC = DllCall(Gdi32, long:"CreateDCA", lpstr:"DISPLAY", lpnull, lpnull, lpnull)
; 1440 twips per inch, 72 points per inch x 20 twips per point.
; LOGPIXELSX=88, number of pixels per logical inch along the screen width.
; LOGPIXELSY=90, number of pixels per logical inch along the screen height.
Pix2TwipsX = 1440/DllCall(Gdi32, long:"GetDeviceCaps", long:hDC, long:88)
Pix2TwipsY = 1440/DllCall(Gdi32, long:"GetDeviceCaps", long:hDC, long:90)
DllCall(Gdi32, long:"DeleteDC", long:hDC)
User32 = StrCat(DirWindows(1),"User32.dll")
;constants for sendmessage()
TV_FIRST = 4352
TVM_SETBKCOLOR = (TV_FIRST + 29)
TVM_SETINSERTMARKCOLOR = (TV_FIRST + 37)

xlUp = -4162
tvwChild = 4
isNode=0
NodeVar=""
TVFormat=`WWWDLGED,6.1`

TVCaption=`Treeview Control- XML Sample`
TVX=9999
TVY=9999
TVWidth=168
TVHeight=119
TVNumControls=001
TVProcedure=`dlgproc`
TVFont=`Microsoft Sans Serif|6144|70|34`
TVTextColor=`0|0|0`
TVBackground=`DEFAULT,DEFAULT`
TVConfig=0

TV001=`001,001,166,114,COMCONTROL,DEFAULT,"MSComctlLib.TreeCtrl.2",DEFAULT,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

BP=Dialog("TV")
Exit

;/////////////////////////////////////////////////////////////////////////
:udfs
#DefineSubRoutine dlgproc(handle,msg,id,p4,p5)
Switch msg
   Case 0  ;Dialog Initialization
      hWnd=handle
      DisableMenuItem(handle,1)
      DisableMenuItem(handle,2)
      DialogProcOptions(handle, 1, 250) ; 250 ms Timer.
      DialogProcOptions(handle, 11,-1)
      oTree = DialogObject(handle,001,3)
      ;set background color for Treeview
      hWnd1 = oTree.Hwnd
      DllCall(User32,long:"SendMessageA",long:hWnd1,long:TVM_SETBKCOLOR,long:0,long:RGB(81,99,255))
      DllCall(User32,long:"SendMessageA",long:hWnd1,long:TVM_SETINSERTMARKCOLOR,long:0,long:RGB(81,99,255))
      ;capture 2 events
      DialogObject(handle, 001, 1,"MouseDown",001001)
      DialogObject(handle, 001, 1,"NodeClick",001002)
      treeInit()

      ; Creates a dialog with a resizable border.  GWL_STYLE=-16, offset for the Window Style value and WS_THICKFRAME=262144
      DllCall(User32, long:"SetWindowLongA", long:handle, long:-16, long:DllCall(User32, long:"GetWindowLongA", long:handle, long:-16) | 262144)
      Rect = GetWinRect(handle)
      LastWidth = ItemExtract(3, Rect, ',')-ItemExtract(1, Rect, ',')
      LastHeight = ItemExtract(4, Rect, ',')-ItemExtract(2, Rect, ',')
      hCtrl = DllCall(User32, long:"GetDlgItem", long:handle, long:100)  ; Only one control so CtrlID==100.
      Rect = GetWinRect(hCtrl)
      ctrlWidth = ItemExtract(3, Rect, ',')-ItemExtract(1, Rect, ',')
      ctrlHeight = ItemExtract(4, Rect, ',')-ItemExtract(2, Rect, ',')
      xBorder = LastWidth-ctrlWidth
      yBorder = LastHeight-ctrlHeight

      Return(-1)
      Break

   Case 1
      Rect = GetWinRect(handle)
      If ItemExtract(3, Rect, ',')-ItemExtract(1, Rect, ',')==LastWidth && ItemExtract(4, Rect, ',')-ItemExtract(2, Rect, ',')==LastHeight Then Return -1
      LastWidth = ItemExtract(3, Rect, ',')-ItemExtract(1, Rect, ',')
      LastHeight = ItemExtract(4, Rect, ',')-ItemExtract(2, Rect, ',')
      ; Resize and Redraw control 2|64.
      DllCall(User32, long:"SetWindowPos", long:hCtrl, long:0, long:0, long:0, long:LastWidth-xBorder, long:LastHeight-yBorder, long:2|64)
      Return -1

   Case 11 ; Close
      oTree=0
      Break
   Case 14 ;COM event message
      If p4.identifier == 001001 Then showmenu()
      If p4.identifier == 001002 Then Display(1,"Node Clicked",StrCat("KEY:",p4.parameters(1).value.key,@CRLF,"TEXT:",p4.parameters(1).value.text))
      Break
EndSwitch
Return -2

#EndSubRoutine



#DefineSubRoutine treeInit()
oRS    = ObjectOpen('ADODB.Recordset')
oRS.Open(cXML,"Provider=MSPersist;",,,256)
oTree.Appearance = 1
oTree.Indentation =0
oTree.Sorted = @FALSE
oTree.LineStyle = 0 ;tvwRootLines = 1 tvwTreeLines = 0
oNodes = oTree.Nodes
oNodes.Clear()
oNodes.Add(,,"EMEA","EMEA")
oRS.MoveFirst()
nLevel1 = "EMEA"
nLevel2 = ""
nLevel3=""
list2=""
list3=""
list4=""

While ! oRS.eof()
   ;Message(nLevel2,StrCat(i,@CRLF,oWS.Cells(i, "B").Value))
   If oRS.Fields("Region").Value <> nLevel2  && ! StrIndex(list2,oRS.Fields("Region").Value,0,@FWDSCAN)
      oNodes.Add(nLevel1, tvwChild, oRS.Fields("Region").Value, oRS.Fields("Region").Value)
      nLevel2 = oRS.Fields("Region").Value
      list2=StrCat(list2,nLevel2,",")

      While oRS.Fields("Region").Value==nLevel2
         cCounty =oRS.Fields("Country").Value
         If cCounty<>nLevel3 && ( !StrIndex(list3,cCounty,0,@FWDSCAN) )
            nLevel3 = cCounty
            oNodes.Add(nLevel2, tvwChild,oRS.Fields("Country").Value, oRS.Fields("Country").Value)
            list3=StrCat(list3,oRS.Fields("Country").Value,",")

         EndIf
         oRS.MoveNext()
      EndWhile
   Else
      oRS.MoveNext()
   EndIf

EndWhile
oRS.Close()
oRS=0
oNodes.Add(nLevel1, tvwChild, "_____", "_____")
For i = 1 To oNodes.Count
   oNodes.Item(i).ForeColor = RGB(255,255,128)
   oNodes.Item(i).Backcolor = RGB(81,99,255)
Next
oNodes.Item(1).EnsureVisible
oNodes.Item(1).Expanded = @TRUE
oNodes=0
Return(1)
#EndSubRoutine


#DefineSubRoutine showmenu()
If p4.parameters(1).value ==2 ;right click
   x=p4.parameters(3).value
   y=p4.parameters(4).value
   oNode = oTree.HitTest(x*Pix2TwipsX,y*Pix2TwipsY)
   If oNode<>0
      Choices = 'Re&Build Tree|&Remove Selected Node||&Exit'
      nChoice = 0
      nChoice = udfPopupMenu(Choices, hWnd)
      Select nChoice
         Case 1
            treeinit()
            Break
         Case 2
            If oNode.Text == nLevel1 || oNode.Text=="_____"
               Display(1,"Unable To Complete","Cannot Remove Root or End Node")
            Else
               oTree.Nodes.Remove(oNode.Index) ;removes it
               oTree.Refresh()
            EndIf
            Break
         Case 4
            oTree=0
            Exit
            Break
      EndSelect
   EndIf
EndIf
Return(1)
#EndSubRoutine

#DefineSubRoutine udfPopupMenu(Choices, hWnd)
   hMenu = DllCall(User32,long:"CreatePopupMenu")     ; Create menu.
   Cnts = ItemCount(Choices, '|')
   For Cnt = 1 To Cnts
      mnuOpts = 16
      Choice = ItemExtract(Cnt, Choices, "|")
      Select 1
         Case Choice==''
            mnuOpts = mnuOpts|2048                   ; MF_SEPARATOR=2048
            Break
         Case StrIndex(Choice, '*', 0, @FWDSCAN)==1
            mnuOpts = mnuOpts|8                      ; MF_CHECKED=8
            Choice = StrSub(Choice, 2, -1)
            Break
         Case StrIndex(Choice, '!', 0, @FWDSCAN)==1
            mnuOpts = mnuOpts|1                      ; MF_GRAYED=1
            Choice = StrSub(Choice, 2, -1)
            Break
      EndSelect
      DllCall(User32,long:"AppendMenuA",long:hMenu, long:mnuOpts, long:Cnt, lpstr:Choice) ;MF_STRING=0, MF_POPUP=16
   Next

   Pt = MouseInfo(3)
   ; Wait for a click or the "Escape" key.
   ; TrackPopupMenu(
   ;    hMenu     - handle of shortcut menu
   ;    uFlags    - screen-position and mouse-button flags, TPM_RETURNCMD=256+TPM_LEFTBUTTON=0
   ;    x         - horizontal position, in screen coordinates
   ;    y         - vertical position, in screen coordinates
   ;    nReserved - reserved, must be zero
   ;    hWnd      - handle of owner window
   ;    prcRect   - points to RECT that specifies no-dismissal area, if Null dismisses if user clicks away from the popup.
   ; )
   S = DllCall(User32,long:"TrackPopupMenu", long:hMenu, long:256, long:ItemExtract(1, Pt, ' '), long:ItemExtract(2, Pt, ' '), long:0, long:hWnd, lpnull)
   DllCall(User32, long:"DestroyMenu", long:hMenu)    ; Destroy menu.
   Return S
#EndSubRoutine


#DefineFunction GetWinRect(hWnd) ; as Long
   Rect = BinaryAlloc(16)
   DllCall(StrCat(DirWindows(1), 'User32.dll'), long:"GetWindowRect", long:hWnd, lpbinary:Rect)
   rtn = ''
   For cnt = 0 To 3
      rtn =  ItemInsert(BinaryPeek4(Rect, cnt*4), -1, rtn, ',')
   Next
   BinaryFree(Rect)
   Return(rtn)
#EndFunction

#DefineFunction RGB(r, g, b)
   Return r|(g<<8)|(b<<16)
#EndFunction

#DefineSubRoutine DisableMenuItem(handle,item)
   GWL_STYLE = -16
   dmiButton = 0
   If (item & 1)
      dmiButton = dmiButton | 65536 ; WS_MAXIMIZEBOX
   EndIf
   If (item & 2)
      dmiButton = dmiButton | 131072 ; WS_MINIMIZEBOX
   EndIf
   If (item & 4)
      dmiButton = dmiButton | 262144 ; WS_SIZEBOX (WS_THICKFRAME)
   EndIf
   dmiPrevStyle = DllCall(User32, long:"GetWindowLongA", long:handle, long:GWL_STYLE)
   dmiDesStyle = dmiPrevStyle & ~dmiButton
   DllCall(User32, long:"SetWindowLongA", long:handle, long:GWL_STYLE, long:dmiDesStyle)
   Return(1)
#EndSubRoutine

Return


COUNTRYS.XML

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
   xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
   xmlns:rs='urn:schemas-microsoft-com:rowset'
   xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
   <s:ElementType name='row' content='eltOnly' rs:updatable='true'>
      <s:AttributeType name='Country' rs:number='2' rs:nullable='true' rs:maydefer='true' rs:write='true' rs:basetable='Countries'
          rs:basecolumn='Country'>
         <s:datatype dt:type='string' dt:maxLength='255'/>
      </s:AttributeType>
      <s:AttributeType name='Region' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:write='true' rs:basetable='Countries'
          rs:basecolumn='Region'>
         <s:datatype dt:type='string' dt:maxLength='255'/>
      </s:AttributeType>
      <s:extends type='rs:rowbase'/>
   </s:ElementType>
</s:Schema>
<rs:data>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Lithuania' Region='NORDICS'/>
   <z:row Country='Latvia' Region='NORDICS'/>
   <z:row Country='Estonia' Region='NORDICS'/>
   <z:row Country='BeNeLux Region Top' Region='BENELUX'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='NorthWest Africa' Region='FRANCE'/>
   <z:row Country='Tunisia' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='IGIT Region Top' Region='IGIT'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Cyprus' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Israel WTC Offshore Business' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='Turkey WTC' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='W.T. Africa' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='WTC CE E Republic Region' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Ukriane' Region='CEMA'/>
   <z:row Country='Turkish Republic Region' Region='CEMA'/>
   <z:row Country='Bosnia &#x26; Herzegovina' Region='CEMA'/>
   <z:row Country='Belarus' Region='CEMA'/>
   <z:row Country='Kazakhstan' Region='CEMA'/>
   <z:row Country='Macedonia' Region='CEMA'/>
   <z:row Country='Georgia' Region='CEMA'/>
   <z:row Country='Moldova' Region='CEMA'/>
   <z:row Country='Albania' Region='CEMA'/>
   <z:row Country='Armenia' Region='CEMA'/>
   <z:row Country='Kyrgyzstan' Region='CEMA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Pakistan' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='EMEA ELIMINATIONS' Region='ABOVE'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Lithuania' Region='NORDICS'/>
   <z:row Country='Latvia' Region='NORDICS'/>
   <z:row Country='Estonia' Region='NORDICS'/>
   <z:row Country='BeNeLux Region Top' Region='BENELUX'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='NorthWest Africa' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='IGIT Region Top' Region='IGIT'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Cyprus' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='W.T. Africa' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='WTC CE E Republic Region' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Ukriane' Region='CEMA'/>
   <z:row Country='Bosnia &#x26; Herzegovina' Region='CEMA'/>
   <z:row Country='Belarus' Region='CEMA'/>
   <z:row Country='Kazakhstan' Region='CEMA'/>
   <z:row Country='Macedonia' Region='CEMA'/>
   <z:row Country='Georgia' Region='CEMA'/>
   <z:row Country='Moldova' Region='CEMA'/>
   <z:row Country='Albania' Region='CEMA'/>
   <z:row Country='Armenia' Region='CEMA'/>
   <z:row Country='Kyrgyzstan' Region='CEMA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Pakistan' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Cyprus' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='BeNeLux Region Top' Region='BENELUX'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='IGIT Region Top' Region='IGIT'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='WTC CE E Republic Region' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Ukriane' Region='CEMA'/>
   <z:row Country='Bosnia &#x26; Herzegovina' Region='CEMA'/>
   <z:row Country='Kazakhstan' Region='CEMA'/>
   <z:row Country='Macedonia' Region='CEMA'/>
   <z:row Country='Moldova' Region='CEMA'/>
   <z:row Country='Pakistan' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA TOP CTRY REGION OTH' Region='ABOVE'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='BeNeLux Region Top' Region='BENELUX'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='NorthWest Africa' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='IGIT Region Top' Region='IGIT'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Cyprus' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Israel WTC Offshore Business' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='Turkey WTC' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='WTC CE E Republic Region' Region='CEMA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='EMEA ELIMINATIONS' Region='ABOVE'/>
   <z:row Country='EMEA TOP CTRY REGION OTH' Region='ABOVE'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Lithuania' Region='NORDICS'/>
   <z:row Country='Latvia' Region='NORDICS'/>
   <z:row Country='Estonia' Region='NORDICS'/>
   <z:row Country='BeNeLux Region Top' Region='BENELUX'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='NorthWest Africa' Region='FRANCE'/>
   <z:row Country='Tunisia' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='IGIT Region Top' Region='IGIT'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Cyprus' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Israel WTC Offshore Business' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='Turkey WTC' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='W.T. Africa' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='Lenovo CEMA' Region='CEMA'/>
   <z:row Country='WTC CE E Republic Region' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Ukriane' Region='CEMA'/>
   <z:row Country='Turkish Republic Region' Region='CEMA'/>
   <z:row Country='Bosnia &#x26; Herzegovina' Region='CEMA'/>
   <z:row Country='Belarus' Region='CEMA'/>
   <z:row Country='Kazakhstan' Region='CEMA'/>
   <z:row Country='Macedonia' Region='CEMA'/>
   <z:row Country='Georgia' Region='CEMA'/>
   <z:row Country='Moldova' Region='CEMA'/>
   <z:row Country='Albania' Region='CEMA'/>
   <z:row Country='Armenia' Region='CEMA'/>
   <z:row Country='Kyrgyzstan' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Pakistan' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='EMEA STANDARD' Region='ABOVE'/>
   <z:row Country='EMEA ELIMINATIONS' Region='ABOVE'/>
   <z:row Country='EMEA OTHER ELIMINATIONS' Region='ABOVE'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Tunisia' Region='FRANCE'/>
   <z:row Country='Morocco' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='W.T. Africa' Region='UKISA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='Lenovo CEMA' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Lithuania' Region='NORDICS'/>
   <z:row Country='Latvia' Region='NORDICS'/>
   <z:row Country='Estonia' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France Region Top' Region='FRANCE'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Tunisia' Region='FRANCE'/>
   <z:row Country='Morocco' Region='FRANCE'/>
   <z:row Country='Italy Region Top' Region='ITALY'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UKISA Region Top' Region='UKISA'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='CEMA EMEA GEO Top CTRY' Region='CEMA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='Lenovo CEMA' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='WT Middle East' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='EMEA GEO TOP CTRY' Region='ABOVE'/>
   <z:row Country='EURO COORDINATION' Region='ABOVE'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Morocco' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='Spain' Region='IGIT'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Russia' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='Lenovo CEMA' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Middle East FZE' Region='CEMA'/>
   <z:row Country='EURO COORDINATION' Region='ABOVE'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Italy' Region='ITALY'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
   <z:row Country='Norway' Region='NORDICS'/>
   <z:row Country='Finland' Region='NORDICS'/>
   <z:row Country='Belgium' Region='BENELUX'/>
   <z:row Country='Netherland' Region='BENELUX'/>
   <z:row Country='France' Region='FRANCE'/>
   <z:row Country='Morocco' Region='FRANCE'/>
   <z:row Country='Portugal' Region='IGIT'/>
   <z:row Country='Greece' Region='IGIT'/>
   <z:row Country='Israel Semea Sub' Region='IGIT'/>
   <z:row Country='Turkey Sub' Region='IGIT'/>
   <z:row Country='UK' Region='UKISA'/>
   <z:row Country='Ireland' Region='UKISA'/>
   <z:row Country='South Africa Republic' Region='UKISA'/>
   <z:row Country='W.T. Africa' Region='UKISA'/>
   <z:row Country='Romania' Region='CEMA'/>
   <z:row Country='Poland' Region='CEMA'/>
   <z:row Country='Hungary' Region='CEMA'/>
   <z:row Country='Slovenia' Region='CEMA'/>
   <z:row Country='Croatia' Region='CEMA'/>
   <z:row Country='Slovakia' Region='CEMA'/>
   <z:row Country='Czech Republic' Region='CEMA'/>
   <z:row Country='Bulgaria' Region='CEMA'/>
   <z:row Country='Lenovo CEMA' Region='CEMA'/>
   <z:row Country='Serbia &#x26; Montenegro' Region='CEMA'/>
   <z:row Country='Egypt' Region='CEMA'/>
   <z:row Country='Central Region Top' Region='CENTRAL'/>
   <z:row Country='Germany' Region='CENTRAL'/>
   <z:row Country='Switzerland' Region='CENTRAL'/>
   <z:row Country='Austria' Region='CENTRAL'/>
   <z:row Country='NORDICS Region Top' Region='NORDICS'/>
   <z:row Country='Danmark' Region='NORDICS'/>
   <z:row Country='Sweden' Region='NORDICS'/>
</rs:data>
</xml>

Article ID:   W17250
File Created: 2007:07:03:14:29:00
Last Updated: 2007:07:03:14:29:00