On 07/31/2011 03:50 AM, Johnny Rosenberg wrote:
2011/7/31 Andrew Douglas Pitonyak<[email protected]>:
I expect that you need to set this from the sheets draw page

' Gets the Shape of a Control( e. g. to reset the size or Position of the
control
' Parameters:
' The 'oContainer' is the Document or a specific sheet of a Calc - Document
' 'CName' is the Name of the Control
Function GetControlShape(oContainer as Object,CName as String)
Dim i as integer
Dim aShape as Object
   For i = 0 to oContainer.DrawPage.Count-1
      aShape = oContainer.DrawPage(i)
      If HasUnoInterfaces(aShape, "com.sun.star.drawing.XControlShape") then
         If ashape.Control.Name = CName then
            GetControlShape = aShape
            exit Function
         End If
      End If
   Next
End Function

So, how do I call it?

Sub gcs
  Dim oSize
  oSize = GetControlShape(ThisComponent.Sheets(0), "button1").Size
  Print oSize.Height
  Print oSize.Width
End Sub

In this example, I pass the sheet containing the button with the button name
to the "GetControlShape" function. I forget the unit of measure. Hmm, oh
yeas, 1" = oSize.Height / 2540

But wait, your units metric. I think life just got easier for you :-), just
set to 500 for 1/2 CM I believe.
So you mean that the size is measured in 10⁻⁵ m (1/100 000 m)? That's
kind of odd, isn't it? But on the other hand, odd doesn't necessarily
mean wrong…

So this is correct?
500 ⇨ ½ cm=5 mm (cm≠CM, by the way)
1000 ⇨ 1 cm
10 000 ⇨ 1 dm
100 000 ⇨ 1 m

I would need to look up the units, but, I believe that I stated it correctly.

What I did not mention, however, is that if you want to change the size, you likely need to do something like:


Dim oSize
Dim oShape
oShape = GetControlShape(ThisComponent.Sheets(0), "button1")
oSize = oShape.Size
oSize.Height=500
oShape.Size = oSize

You cannot simply use

oShape.Size.Height=500


Reason? Because the Size object is an UnoStruct, and copy semantics are used to return a struct rather than returning a reference as occurs with other objects. I seem to remember that there was one or two exceptions to that, but when I was told that, the core developer could not remember what the exception was.
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info:  http://www.pitonyak.org/oo.php


--
Unsubscribe instructions: E-mail to [email protected]
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Reply via email to