CreateUnoService/createInstance funktionieren nicht

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von F3K Total »

Hi,
Ich empfehle Dir die Verwendung eines Inspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.
Analysiere ich

Code: Alles auswählen

Xray oSCellRanges
und schaue mir die Methode

Code: Alles auswählen

addRangeAddress
an, dann finde ich:
addRangeAddress ( aCellRangeAddress as com.sun.star.table.CellRangeAddress, bMergeRanges as boolean )
Im SDK steht dazu:
  • addRangeAddress( [in] ::com::sun::star::table::CellRangeAddress aCellRangeAddress,[in] boolean bMergeRanges );
  • Description
    adds the given range to the collection of cell ranges.
  • Parameter aCellRangeAddress
    contains the address of the new range.
  • Parameter bMergeRanges
    defines how the range should be added. To merge the ranges takes more time, but the memory usage is lower.
Ergo, fehlt bei dir ein boolean Wert, z.B.:

Code: Alles auswählen

    oDoc = ThisComponent
    oCurSel = oDoc.getCurrentSelection()
    ' Stelle an der ich ein SheetCellRanges Object haben möchte
    oSCellRanges = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges") ' bzw.
    'oSCellRange = CreateUnoService("com.sun.star.sheet.SheetCellRanges")
    oSCellRanges.addRangeAddress(oCurSel.getRangeAddress(), false)
Gruß R
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von Karolus »

Hallo
Die Instanzierung erfolgt aus dem Dokument heraus:

Code: Alles auswählen

cellranges = doc.createInstance("com.sun.star.sheet.SheetCellRanges")
und die Methode ..addRangeAddress benötigt ein 2 Argument (boolean merge)

Zur Verdeutlichung:

Code: Alles auswählen

sub test
	doc = thiscomponent
	sheet = doc.sheets(0)
	extrarange = sheet.getCellRangeByName("A20:A30").getRangeAddress
	
	sel = doc.getCurrentSelection()
	
	cellranges = doc.createInstance("com.sun.star.sheet.SheetCellRanges")
	
'↓beachte die unterschiedlichen Methoden für Mehrfach-|Einzelselektion 
	if sel.supportsService("com.sun.star.sheet.SheetCellRanges") then
		cellranges.addRangeAddresses(sel.getRangeAddresses, 0 )
	else sel.supportsService("com.sun.star.sheet.SheetCellRange")
		cellranges.addRangeAddress(sel.getRangeAddress, 0 )
	end if
'!! an dieser Stelle ist cellranges identisch zu sel, mglw. sind daher die letzten Zeilen seit 'cellranges = ...' überflüssig !!
			
	cellranges.addRangeAddress( extraRange, 0 )
	
	'↓Test-Schleife mit Ausgabe der Zellbereichsnamen
	enumeration = cellranges.createEnumeration
	while enumeration.hasMoreElements
		msgbox enumeration.nextElement.AbsoluteName
	wend
end sub


Karolus
Zuletzt geändert von Karolus am So, 14.04.2013 11:08, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von juetho »

Kleine Zusatzbemerkung zu diesem Teilproblem:
Gastdc hat geschrieben:

Code: Alles auswählen

if oSCellRange <> NULL liefert auch immer false
Für solche Prüfungen ist die IsNull-Funktion zu verwenden:

Code: Alles auswählen

if not isNull(oSCellRange) then
Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von F3K Total »

Na,
vielleicht ein JAVA-Problem? Welche Version verwendest Du und kennst Du http://forum.openoffice.org/en/forum/vi ... =6&t=60053 den schon?
Gruß R
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von Karolus »

Hallo dc

Hast du den oben geposteten Code 1 zu 1 übernommen und getestet aus einem Calcdocument mit einer|mehreren markierten Zellen|Zellbereichen?

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von Karolus »

Hallo

Warum geht das nicht konkreter, wieso schrieb ich wohl: 1 zu 1 übernommen ??

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CreateUnoService/createInstance funktionieren nicht

Beitrag von F3K Total »

Moin,
Crossposting ohne Referenz ist unhöflich!
R
Antworten