Steffen,
please find the basic code who inserts graphics in Tablecells using the
cell dimensions to dimensioning the grapgics.
Finding the dimensions off a cell can be tricky when cells are merged
ect.. therefore i use the "dificult to read" :-)firts part of the code
hope it helps
Fernand
oText = oDocument.text
RasterofCursor = True
oViewCursor = oDocument.getCurrentController().getViewCursor()
' xray oviewcursor
If Not isEmpty(oViewCursor.TextTable) then ' Cursor is in een Tabel
' sFrameofTabel = "TABEL"
' inFRameofTabel = true
' RasterofCursor = False
Twidth = oViewCursor.TextTable.width
TTotalpercent = oViewCursor.TextTable.TableColumnRelativeSum
startcell = oViewCursor.cell.cellname
Kindex = asc(left(oViewCursor.cell.cellname,1))-65
Rindex = int(mid(oViewCursor.cell.cellname,2,2))-1
CurRow = oViewCursor.texttable.rows.getbyindex(Rindex)
if CurRow.IsAutoHeight = True then
msgbox "De ROWhooghte moet FIXED zijn !!!!!" & chr(13) & "Eerst
aanpassen, dan pas kan je verder"
exit sub
end if
if
oViewCursor.cell.compareRegionStarts(oViewCursor.cell.getstart,oViewCursor.cell.getend)
<> 0 or oViewCursor.cell.string <>"" then
msgbox "er mag in de cell enkel één" & chr(13) & "RETURN staan" &
chr(13) & "Eerst aanpassen, dan pas kan je verder"
exit sub
endif
if oViewCursor.paraStylename <> "Standard" then
msgbox "de ParaGraphStyle in de Tabelcell staat niet op default" &
chr(13) & "wordt nu automatisch aangepast !!"
oViewCursor.ParaStyleName = "Standard"
end if
if oViewCursor.CharStylename <> "" then
msgbox "de CharacterStyle in de Tabelcell staat niet op default" &
chr(13) & "wordt nu automatisch aangepast !!"
oViewCursor.setPropertyToDefault("CharStyleName")
end if
if oViewCursor.texttable.Horiorient = 6 then
msgbox " De Table mag niet AUTOMATISCH gealigneerd zijn" & chr(13) &
"wordt nu automatisch aangepast naar ""center"" !!"
oViewCursor.texttable.Horiorient = 2
end if
' welke cell ??
startcellname = oViewCursor.cell.cellname
startrow = int(mid(startcellname,2,2))
if oViewCursor.cell.VertOrient <> 2 then
msgbox "Cursor staat niet in de HOOGTE gecentreerd" & chr(13) &
"wordt nu automatisch aangepast !!"
oViewCursor.cell.VertOrient = 2
end if
if oViewCursor.cell.createEnumeration.nextelement.paraAdjust <> 3 then
msgbox "Tabelcell-Cursor is Niet in de BREEDTE gecentreerd" &
chr(13) & "wordt nu automatisch aangepast !!"
oViewCursor.cell.createEnumeration.nextelement.paraAdjust = 3
end if
oViewcursor.goDOWN(1,false) ' de tabel MOET in een FRame
zitten anders problemen bij de onderste rij !!!!!
if isEmpty(oViewCursor.TextTable) then
startcellpos = "ONDER"
oViewcursor.goUP(1,false)
end if
if startcellpos = "ONDER" then
'eerst terug naar startcell
otext = oviewcursor.texttable.getcellbyname(startcellname,true).text
otabelCursor = oText.createTextCursor()
oViewcursor.gotorange(otabelCursor,false)
' xray oViewcursor
If otext.supportsService("com.sun.star.text.Paragraph") then
print "is paragraaf"
exit sub
end if
laatsterow = oViewCursor.TextTable.rows.count
if laatsterow = int(mid(oViewCursor.cell.cellname,2,2)) then ' cell
is één row hoog
iFotH = oViewCursor.texttable.rows.getbyindex(Rindex).height
else
for i= 0 to laatsterow - int(mid(oViewCursor.cell.cellname,2,2))
iFotH = iFotH + oViewCursor.texttable.rows.getbyindex(Rindex+ i
).height
next i
end if
else 'cell boven of midden
' eerst terug naar de startcell
otext = oviewcursor.texttable.getcellbyname(startcellname,true).text
otabelCursor = oText.createTextCursor()
oViewcursor.gotorange(otabelCursor,false)
startrow = int(mid(oViewCursor.cell.cellname,2,2))
oViewcursor.goDOWN(1,false)
volgenderow = int(mid(oViewCursor.cell.cellname,2,2))
if isEmpty(oViewCursor.TextTable) then 'terug naar binnen de tabel
oViewcursor.goUP(1,false)
end if
' terug naar de startcell
otext = oviewcursor.texttable.getcellbyname(startcellname,true).text
otabelCursor = oText.createTextCursor()
oViewcursor.gotorange(otabelCursor,false)
for i= 1 to volgenderow - startrow
iFotH = iFotH + oViewCursor.texttable.rows.getbyindex(Rindex + i-1
).height
next i
endif
' iFotH = CurRow.height
tabstops = CurRow.TableColumnSeparators()
if uBound(tabstops)< 0 then
iFotW = tWidth
else
if kindex = 0 then
iFotW = (twidth * tabstops(Kindex).position/TTotalpercent)
elseif kindex -1 = ubound(tabstops) then
iFotW = twidth - (twidth *
tabstops(Kindex-1).position/TTotalpercent)
else
iFotW = (twidth * tabstops(Kindex).position/TTotalpercent) -
(twidth * tabstops(Kindex-1).position/TTotalpercent)
endif
end if
otext = oViewCursor.text
lAnchor = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
'AT_PARAGRAPH '
oShape =
oDocument.createInstance("com.sun.star.drawing.GraphicObjectShape") '
shape is leeg
oGraphic = oDocument.createInstance("com.sun.star.text.GraphicObject")
oDocument.getDrawPage().add(oShape)
oOriginalGraph = getGraphFromUrl(sGraphicURL)
oShape.Graphic = oOriginalGraph
oGraphic.GraphicUrl = oShape.GraphicUrl
oGraphic.AnchorType = lAnchor
oCell = oViewCursor.cell
oText = oCell.getText()
iFOTh = iFOTH - oCell.BottomBorderDistance - oCell.TopBorderDistance
iFOTw = iFOTw - oCell.LeftBorderDistance - oCell.RightBorderDistance
oCursor = oText.createTextCursor()
oText.insertTextContent( oCursor, oGraphic, False )
' We no longer require the shape object.
oDocument.getDrawPage().reMove(oShape)
oShape = nothing
oGraphic.HoriOrientPosition = 0
oGraphic.VertOrientPosition = 0
oGraphic.SetPropertyValue("GraphicCrop" , aCrop)
oGraphic.SetPropertyValue("HyperLinkName" , sGraphicURL)
oGraphic.PositionProtected = False
oGraphic.SizeProtected = False
oGraphic.ContentProtected = True
oGraphic.width = iFotW
oGraphic.height = iFotH
oGraphic.HoriOrient = NONE
oGraphic.VertOrient = NONE
Hi,
i'm currently trying to solve my problem with tablecells.
I managed to get my GraphicObjects into my oWriter files with help of
snippets, mainly with
http://codesnippets.services.openoffice.org/Writer/Writer.EmbedAGraphicIntoATextdocument.snip
To determine the position where to anchor the image, I'm using
placeholders as normal strings within my oWriter file.
A XTextCursor is placed onto that placeholder and ist used for
text.insertTextContent(cursor, xTextContent, true);
Runs smoothly except for the fact, that if my placeholder is within a
table I'm getting a RuntimeException with no further details.
After some research online I've found several approaches to that
problem. One which suggests using the method
getCellParagraph($cell)
to get an anchor to that specific cell. Problem is, there is no
getCellParagraph() method in the API of OOo.
Maybe it was an older approach.
The second approach I found suggests using Shapes to add them to
DrawPages. I couldn't figure out to make that one work, maybe because
it was suggested for oCalc instead of oWriter. But I don't know if it
should work in oWriter the same way and I'm just too dumb to use it.
That one was discussed here:
http://api.openoffice.org/servlets/ReadMsg?listName=dev&msgNo=2618
So my questions are:
(1) Is it possible to use insertTextContent with images in tablecells
when I'm in oWriter? And what do I have to change to make it work?
When not, why isn't it possible?
(2) Is using Shapes also the way to go for oWriter if I'm trying to
get images into tablecells?
(3) What mehtod is used if I manually insert images into cells with
the oWriter GUI?
Thanks in advance.
Steffen Boersig
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]