Adding a image to a gridcontrol row using BASIC

classic Classic list List threaded Threaded
3 messages Options
Fernand Vanrie Fernand Vanrie
Reply | Threaded
Open this post in threaded view
|

Adding a image to a gridcontrol row using BASIC

Hello,

on a Openoffice wiki page i found some JAVA code to add a image into a
GridControl Row
what i need is how to make a "Object array" in BASIC who supports
graphics and octher data

thanks for any hint

Fernand

The main change in milestone 3 regarding DataModel is the possibility to
add not only text but also images. That's why addRow-method has as
second parameter no more string array but object array. Futher supported
types are int, double, float.

/Java/

  Object  dataModel=  xMultiComponentFactory.createInstanceWithContext(
                 "com.sun.star.awt.grid.DefaultGridDataModel", m_xContext);
  XGridDataModel xGridDataModel=  (XGridDataModel)  UnoRuntime.queryInterface(
                 XGridDataModel.class, dataModel);
  Object  oGraphicProvider=  xMultiComponentFactory.createInstanceWithContext("com.sun.star.graphic.GraphicProvider", m_xContext);
  XGraphicProvider xGraphicProvider=  (XGraphicProvider)      UnoRuntime.queryInterface(XGraphicProvider.class, oGraphicProvider);
  // create the graphic object
  PropertyValue[]  aPropertyValues=  new  PropertyValue[1];
  PropertyValue aPropertyValue=  new  PropertyValue();
  aPropertyValue.Name  =  "URL";
  aPropertyValue.Value  =  "file:///c:/myimages/testimage.png";
  aPropertyValues[0]  =  aPropertyValue;
  XGraphic xGraphic=  xGraphicProvider.queryGraphic(aPropertyValues);
  xGridDataModel.addRow("1",new  Object[]{xGraphic,"1,2",1.3});
  //one row which contains only text
  xGridDataModel.addRow("2",new  Object[]  {"2,1","2,2","1,3"}  );



--
To unsubscribe e-mail to: [hidden email]
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

pietervo pietervo
Reply | Threaded
Open this post in threaded view
|

Re: Adding a image to a gridcontrol row using BASIC

Fernand Vanrie wrote:

 > Hello,
 >
 > on a Openoffice wiki page i found some JAVA code to add a image into a
 > GridControl Row
 > what i need is how to make a "Object array" in BASIC who supports
 > graphics and octher data
 >
 > thanks for any hint
 >
 > Fernand
 >

I think new  Object[]{xGraphic,"1,2",1.3}) translates to
Array(xGraphic,"1,2",1.3)
--
Piet van Oostrum <[hidden email]>
WWW: http://pietvanoostrum.com/
PGP key: [8DAE142BE17999C4]

--
To unsubscribe e-mail to: [hidden email]
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

Fernand Vanrie Fernand Vanrie
Reply | Threaded
Open this post in threaded view
|

Re: Adding a image to a gridcontrol row using BASIC

Piet ,
Thanks works like a charm !

Belg of Hollander ?

Groeten

Fernand

find working code (adapted from Bernard Marcely) below:
  Makes a Gridcontrol in a dialog with a graphic in the first cell

Sub Main
  xgraphic  =  GetGraphFromHexString(GetPicHexString)
  makegrid(xgraphic)
End Sub

function GetGraphFromHexString(sHex as String) as Any
     oStorageFac = createUnoService("com.sun.star.embed.StorageFactory")
     oStorage    = oStorageFac.createInstance
     oStream     = oStorage.openStreamElement("ms777",
com.sun.star.embed.ElementModes.READWRITE)

     oDataOutputStream = createUNOService
("com.sun.star.io.DataOutputStream")
     oDataOutputStream.setOutputStream(oStream)
     for k=0 to len(sHex)/2-1
       i = CInt("&H" & Mid(sHex, 2*k+1,2))
       if i >=128 then i = i-256
       oDataOutputStream.writeByte(i)
       next k

     oDataOutputStream.flush
     oDataOutputStream.closeOutput

     oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
     Dim oProps(0)as new com.sun.star.beans.PropertyValue
     oProps(0).Name  = "InputStream"
     oProps(0).Value = oStream
     GetGraphFromHexString = oProvider.queryGraphic(oProps())
end function


function GetPicHexString() as String

     s =        "47494638396114001400E72700000000"
     s = s & "01010102020203030304040405050506"
     s = s & "06060707070808080909090A0A0A0B0B"
     s = s & "0B0C0C0C0D0D0D0E0E0E0F0F0F101010"
     s = s & "11111112121213131314141415151516"
     s = s & "16161717171818181919191A1A1A1B1B"
     s = s & "1B1C1C1C1D1D1D1E1E1E1F1F1F202020"
     s = s & "21212122222223232324242425252526"
     s = s & "26262727272828282929292A2A2A2B2B"
     s = s & "2B2C2C2C2D2D2D2E2E2E2F2F2F303030"
     s = s & "31313132323233333334343435353536"
     s = s & "36363737373838383939393A3A3A3B3B"
     s = s & "3B3C3C3C3D3D3D3E3E3E3F3F3F404040"
     s = s & "41414142424243434344444445454546"
     s = s & "46464747474848484949494A4A4A4B4B"
     s = s & "4B4C4C4C4D4D4D4E4E4E4F4F4F505050"
     s = s & "51515152525253535354545455555556"
     s = s & "56565757575858585959595A5A5A5B5B"
     s = s & "5B5C5C5C5D5D5D5E5E5E5F5F5F606060"
     s = s & "61616162626263636364646465656566"
     s = s & "66666767676868686969696A6A6A6B6B"
     s = s & "6B6C6C6C6D6D6D6E6E6E6F6F6F707070"
     s = s & "71717172727273737374747475757576"
     s = s & "76767777777878787979797A7A7A7B7B"
     s = s & "7B7C7C7C7D7D7D7E7E7E7F7F7F808080"
     s = s & "81818182828283838384848485858586"
     s = s & "86868787878888888989898A8A8A8B8B"
     s = s & "8B8C8C8C8D8D8D8E8E8E8F8F8F909090"
     s = s & "91919192929293939394949495959596"
     s = s & "96969797979898989999999A9A9A9B9B"
     s = s & "9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0"
     s = s & "A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6"
     s = s & "A6A6A7A7A7A8A8A8A9A9A9AAAAAAABAB"
     s = s & "ABACACACADADADAEAEAEAFAFAFB0B0B0"
     s = s & "B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6"
     s = s & "B6B6B7B7B7B8B8B8B9B9B9BABABABBBB"
     s = s & "BBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0"
     s = s & "C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6"
     s = s & "C6C6C7C7C7C8C8C8C9C9C9CACACACBCB"
     s = s & "CBCCCCCCCDCDCDCECECECFCFCFD0D0D0"
     s = s & "D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D6"
     s = s & "D6D6D7D7D7D8D8D8D9D9D9DADADADBDB"
     s = s & "DBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0"
     s = s & "E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6"
     s = s & "E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEB"
     s = s & "EBECECECEDEDEDEEEEEEEFEFEFF0F0F0"
     s = s & "F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6"
     s = s & "F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFB"
     s = s & "FBFCFCFCFDFDFDFEFEFEFFFFFF21FE03"
     s = s & "42616A002C000000001400140000085C"
     s = s & "0001081C48B0A0C183080D9A5BC8B0A1"
     s = s & "4373041F36242801E240890F2500B028"
     s = s & "1063C38A1B237A34571122C78D1E4B9A"
     s = s & "14295125C3842C275E9488D261CC8934"
     s = s & "673EAC29B323CD9C3E7702E58973A74E"
     s = s & "9B4331125D08B3A9D3840101003B"

     GetPicHexString = s

end function

Sub makegrid(xgraphic)
Dim dlg As Object, km As Object
Dim gdatam As Object, gcolm As Object, uneColonne As Object

DialogLibraries.loadLibrary("Standard")
dlg =
CreateUnoDialog(DialogLibraries.getByName("Standard").getByName("Dialog1"))

gcolm = CreateUnoService("com.sun.star.awt.grid.DefaultGridColumnModel")
uneColonne = CreateUnoService("com.sun.star.awt.grid.GridColumn")
uneColonne.Title = "Production"
gcolm.addColumn(uneColonne)
uneColonne = CreateUnoService("com.sun.star.awt.grid.GridColumn")
uneColonne.Title = "Info"
gcolm.addColumn(uneColonne)
uneColonne = CreateUnoService("com.sun.star.awt.grid.GridColumn")
uneColonne.Title = "Result"
gcolm.addColumn(uneColonne)

gdatam = CreateUnoService("com.sun.star.awt.grid.DefaultGridDataModel")
dim ass() as variant

gdatam.addRow("France", array(xgraphic,"aaaa", -217))
gdatam.addRow("Germany", Array(xgraphic,"bbbb", 1234))
gdatam.addRow("Sweden", Array(xgraphic,"cccc", 951.23))
'gdatam.RowHeaderWidth = 30


km = dlg.Model.createInstance("com.sun.star.awt.grid.UnoControlGridModel")
km.PositionX = 15
km.PositionY = 15
km.Width = 200
km.Height = 150
km.Name = "Grid1"
km.GridDataModel = gdatam
km.ColumnModel = gcolm
km.GridLineColor = RGB(0, 0, 0)
km.TextColor =     RGB(0,0,150)
km.ShowColumnHeader = True
km.ShowRowHeader = True
km.HeaderBackgroundColor = RGB(255, 255, 0)

dlg.Model.insertByName(km.Name, km)

dlg.execute
dlg.dispose
End Sub



> Fernand Vanrie wrote:
>
>   > Hello,
>   >
>   > on a Openoffice wiki page i found some JAVA code to add a image into a
>   > GridControl Row
>   > what i need is how to make a "Object array" in BASIC who supports
>   > graphics and octher data
>   >
>   > thanks for any hint
>   >
>   > Fernand
>   >
>
> I think new  Object[]{xGraphic,"1,2",1.3}) translates to
> Array(xGraphic,"1,2",1.3)


--
To unsubscribe e-mail to: [hidden email]
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