Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   OpenOffice Bookmarks löschen (https://www.delphipraxis.net/163579-openoffice-bookmarks-loeschen.html)

SMichels 5. Okt 2011 11:31

OpenOffice Bookmarks löschen
 
Hallo Community!

Ich bin neu hier und befasse mich seit kurzem intensiv mit Delphi. Jetzt bin ich zum ersten Mal kurz vor der Verzweiflung weil es einfach nicht klappen will.

Es geht um den schon oft diskutierten Zugriff auf die OpenOffice Api. Leider habe ich in der Suche und generell bei Google keine Lösung zu meinem Problem gefunden :(

Ich möchte gern leere Bookmarks in einem OpenOffice Dokument löschen. Ich möchte eine Textmarke nicht leeren, sondern komplett aus der Bookmarkliste entfernen.

Versucht habe ich es schon :

Delphi-Quellcode:
// so
Document.Bookmarks.Clear;
// oder so
Document.Bookmarks.removeAll;
// oder so
Bookmark := Document.Bookmarks.getByName('DataSource_Name').delete;
// oder so
Bookmark := Document.Bookmarks.getByName('DataSource_Name').remove;
Weiß Jemand die Lösung?

Lemmy 5. Okt 2011 13:12

AW: OpenOffice Bookmarks löschen
 
Hi,

über "Bookmarks" auf jeden Fall nicht, da das nur die Interfaces XNameAccess und XINdexAccess unterstützt. Über com.sun.star.text.XBookmarkInsertTool kannst Du Bookmarks einfügen, aber fürs Löschen habe ich auf die Schnelle nichts gefunden.

Warum willst Du die Bookmarks überhaupt aus dem Text entfernen?

SMichels 5. Okt 2011 13:23

AW: OpenOffice Bookmarks löschen
 
hallo Lemmy!

Das ist ja schon mal eine Spur :)

Ich möchte die bookmarks komplett entfernen weil man beim Öffnen des Dokuments mit Word die leeren Textmarken noch sieht. Je nachdem wie viele es sind, sieht das ziehmlich eklig aus.
Es muss ja irgendwie gehen.. schließlich kann man Textmarken über die Oberfläche von OpenOffice auch löschen.

Ich versuch ma mit deinem Tipp zu arbeiten, danke für die schnelle Antwort!

Lemmy 5. Okt 2011 13:27

AW: OpenOffice Bookmarks löschen
 
Hi,

wenn Du was findest, bin ich über eine Info nicht böse :-)

Das SDK hast Du? Und wegen der unschönen Ansicht: Normalerweise ist die Anzeige der Textmarken abgeschaltet und kann in WOrd auch relativ einfach gemacht werden. Wo, das suchst Du am besten in der aktuellen Hilfe deines Words.

Grüße

SMichels 5. Okt 2011 14:56

AW: OpenOffice Bookmarks löschen
 
hey!

hab rausgefunden dass Bookmarks vom Typ XTextContent sind, und XTextContent stammt von XComponent. XComponent lässt sich über .dispose aus dem Dokument löschen.
Das sieht dann in meinem Quellcode so aus:

Delphi-Quellcode:
function OpenOfficeHandler.deleteBookmarks: boolean;
var
  bookmark, cursor : Variant;
  i: Integer;
  str : String;
begin
  result := TRUE;
  try
    // Durchläuft Die Liste der Textmarken vom hinten nach vorne
    for i := Document.Bookmarks.Count - 1 downto 0 do begin
      bookmark := Document.Bookmarks.getByIndex(i);

      // Speichert den Inhalt der Textmarke
      cursor := Document.getText.createTextCursorByRange(bookmark.Anchor);
      cursor.goRight(1, TRUE);
      str := TRIM(cursor.String);

      // Löscht die Textmarke und fügt den Text wieder ein
      bookmark.dispose;
      cursor.String := str;
    end;
  except
    result := FALSE;
  end;
end;
Mit dieser Funktion kann man jetzt Textmarken aus einem Dokument löschen ohne deren Inhalt zu löschen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz