Run macro: Sub TestAWTPoint Dim p(0) As New com.sun.star.awt.Point Dim h As New com.sun.star.awt.Point h.X=1 p(0)=h Msgbox "h.X=" & h.X & " p(0).X=" & p(0).X End Sub Result: h.X=1 p(0).X=0 Must be: h.X=1 p(0).X=1 Looks like an error in the interpretation of the expression p(0).X
Repro.
Note that the following works OK: Sub TestAWTPointInVAriantArray Dim p(0) Dim h As New com.sun.star.awt.Point h.X=1 p(0)=h Msgbox "h.X=" & h.X & " p(0).X=" & p(0).X End Sub
As pointed out by Mike, using Object or Variant as the type of p(0) will work. Sub Test1 Dim p(0) As Object Dim h As New com.sun.star.awt.Point h.X=1 p(0)=h Msgbox "h.X=" & h.X & " p(0).X=" & p(0).X End Sub Now one thing bent my mind. Although printing p(0).X returns 0, if you inspect p(0) using XRay Tool you'll see that X = 1 inside p(0). What gives? Sub Test2 Dim p(0) As New com.sun.star.awt.Point Dim h As New com.sun.star.awt.Point h.x = 1 p(0) = h MsgBox p(0).X ' Prints 0 XRay p(0) ' Here p(0).X is equal to 1 End Sub
The built-in debugger in the IDE also sees no problem with the p array from the start message. The problem arises for arrays of structures. Same for custom types: Type MyType X As Long End Type Sub TestCustomType Dim p(0) As MyType Dim h As MyType h.X=1 p(0)=h Msgbox "h.X=" & h.X & " p(0).X=" & p(0).X End Sub Result: h.X=1 p(0).X=0
The array elements are correct in all examples. The construct p(0).X "sees" the previous version of p(0). Sub TestAWTPoint5 Dim p(0) As New com.sun.star.awt.Point, q Dim h As New com.sun.star.awt.Point Dim v p(0).X=9 h.X=1 p(0)=h Msgbox "h.X=" & h.X & " p(0).X=" & p(0).X ' h.X=1 p(0).X=9 v=p(0) Msgbox "v.X=" & v.X ' v.X=1 End Sub