Inhaltsverzeichnis erstellen

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

Moderator: Moderatoren

Jonny5K
*
Beiträge: 11
Registriert: Mo, 26.03.2007 17:59

Inhaltsverzeichnis erstellen

Beitrag von Jonny5K »

Hallo,

ich versuche gerade eine einfaches Inhaltsverzeichnis mit hilfe eines Marcos zu erstellen.
Wenn ich es über die Gui von Writer mache, dann gehe ich wie folgt vor:
1. Einfügen -> Verzeichnisse -> Verzeichniss...
2. Bei Gliederung auf den Button "..."
3. In dem Kapitelnummerierungs Dialog Ebene 1 auswählen und die Absatzvorlage ändern
Das wäre dann auch schon, was ich machen will. Bis jetzt ist es mir aber noch nicht gelungen die Absatzvorlage in meinem Macro zu ändern.
Hier erstmal mein Code:

Code: Alles auswählen

Sub Inhaltsverzeichnis
Dim Cursor
Dim Index

Index = ThisComponent.createInstance("com.sun.star.text.ContentIndex")
Cursor = ThisComponent.getText().createTextCursor()
ThisComponent.getText().insertTextContent(Cursor, Index, False)

Index.update()
End Sub
Ich habe auch schon eine Vermutung womit ich die Absatzvorlage für z.B. Level 1 ändern kann:
entweder mit

Code: Alles auswählen

Index.LevelFormat
(liefert das Interface: DocumentIndexLevelFormat)
oder mit

Code: Alles auswählen

Index.LevelParagraphStyles
(liefert das Interface: DocumentIndexParagraphStyles)
wobei ich eher zu letzterem tendiere.

Aber leider verstehe ich nicht so recht wie ich diese Objekte ändern kann, Sie implementieren zwar beide das Interface XIndexReplace aber ich weiß nicht, was ich bei der Methode replaceByIndex als Parameter angeben soll.

Hoffe mir kann jemand helfen.

mfg Jonny
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: Inhaltsverzeichnis erstellen

Beitrag von Karolus »

Hallo Jonny

Möchtest du Formateigenschaften bestimmter Absatzvorlagen ändern ?
Bsplw.:

Code: Alles auswählen

Sub Vorlage_finden_und_aendern
xxx = ThisComponent.StyleFamilies.getByName("ParagraphStyles")
'xray xxx'.getbyindex()
msgbox xxx.getbyindex(86).name
xxx.getbyindex(86).charcolor =  RGB(255,0,0)
'xxx.getbyname("contents 1").charcolor =  RGB(255,0,0)
End Sub
 
Eine Liste der Indices und Namen der Absatzvorlagen erhälst du aus einem neuen Writer-dokument mit:

Code: Alles auswählen

Sub Absatzvorlagenliste
xxx = ThisComponent.StyleFamilies.getByName("ParagraphStyles")
cursor = ThisComponent.text.CreateTextCursor
cursor.GotoStart(False)
For i = 0 to xxx.Count-1

	Cursor.String = i &chr(9) & xxx.GetByIndex(i).Name & chr(9)  &xxx.GetByIndex(i).DisplayName  
	Cursor.GotoEndofParagraph(False)
	ThisComponent.Text.insertControlCharacter(Cursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
next i
end sub
' 
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Jonny5K
*
Beiträge: 11
Registriert: Mo, 26.03.2007 17:59

Re: Inhaltsverzeichnis erstellen

Beitrag von Jonny5K »

Hallo Karo,

ich wollte nicht die Formateigenschaften einer Absatzvorlage ändern, sondern in dem "Verzeichnis einfügen"-Dialog unter dem "..."-Button (neben Gliederung) eine andere Absatzvorlage für z.B. die Ebene 1 meines Inhaltsverzeichnisses einstellen.
Standard ist die Ebene ja auf Überschirft 1 bis Überschrift 10 eingestellt, und ich will dort halt eine andere Absatzvorlage.

Gruß
Jonny
Antworten