Rückgabe weiterverarbeiten von XSearchable. findFirst()

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Rückgabe weiterverarbeiten von XSearchable. findFirst()

Lösung gefunden (Ansatz aus dem englischen Forum...)

von ezuehlke » So, 09.07.2006 17:18

Stunden über Stunden stöberns und testens...

Code: Alles auswählen

  private XTextRange wortSuchen(String gesucht) {
    /*
     * Ein bestimmtes Wort im Dokument suchen und Position zurückgeben
     */
    
    XInterface result = null;
    XTextRange range = null;
    String string = "";
    try {
      XTextDocument xTextDocument = 
        (XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, xDocument);
      
      XSearchable xSearchable = 
        (com.sun.star.util.XSearchable)
          UnoRuntime.queryInterface(
            com.sun.star.util.XSearchable.class, xTextDocument);

      XSearchDescriptor xSearchDescr = 
        (com.sun.star.util.XSearchDescriptor)
           xSearchable.createSearchDescriptor();

      xSearchDescr.setSearchString(gesucht);
      
      XPropertySet xSearchProp = 
        (com.sun.star.beans.XPropertySet)
           UnoRuntime.queryInterface(
             com.sun.star.beans.XPropertySet.class, xSearchDescr);
      xSearchProp.setPropertyValue("SearchCaseSensitive",new Boolean(true));
      xSearchProp.setPropertyValue("SearchWords",new Boolean(true));
      result = (XInterface) xSearchable.findFirst(xSearchDescr);
      if (result != null){
        range = (XTextRange)UnoRuntime.queryInterface(
            com.sun.star.text.XTextRange.class,result);
      }
      
    } catch( Exception e) {
      e.printStackTrace(System.err);
    }
    return range;
  }
Ich entschuldige mich für diesen laienhaften Code und gelobe Besserung, Verbesserungen und Anregungen sind wilkommen!

Weiteres findet Ihr auch unter ...

viewtopic.php?t=6861&highlight=text

Rückgabe weiterverarbeiten von XSearchable. findFirst()

von ezuehlke » Fr, 07.07.2006 10:06

Hallo,

ich suche innerhalb eines Dokumentes ein bestimmtes Wort, hierfür nutze ich den XSearchDescriptor.

Code: Alles auswählen

  private Object wortSuchen(String gesucht) {
    Object range = null;
    try {
      XTextDocument xTextDocument = 
        (XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, xDocument);
      
      XSearchable xSearchable = 
        (com.sun.star.util.XSearchable)
          UnoRuntime.queryInterface(
            com.sun.star.util.XSearchable.class, xTextDocument);

      XSearchDescriptor xSearchDescr = 
        (com.sun.star.util.XSearchDescriptor)
           xSearchable.createSearchDescriptor();

      xSearchDescr.setSearchString(gesucht);
      
      XPropertySet xSearchProp = 
        (com.sun.star.beans.XPropertySet)
           UnoRuntime.queryInterface(
             com.sun.star.beans.XPropertySet.class, xSearchDescr);
      xSearchProp.setPropertyValue("SearchCaseSensitive",new Boolean(true));
      xSearchProp.setPropertyValue("SearchWords",new Boolean(true));

      range = (Object) xSearchable.findFirst(xSearchDescr);
      XTextRange test = (XTextRange) range;
      
    } catch( Exception e) {
      e.printStackTrace(System.err);
    }
    
    return range;
  }
Jetzt geht es mir um die Rückgabe von findFirst(), laut API ist es ein Objekt von XInterface, das wiederum die Mutter von allem ist (einfach ausgedrückt).

Über diese Suche möchte ich gerne eine Start und eine Endposition im Dokument ermitteln (zwei Wörter, Ausgeblendet(Hidden)), dieser Bereich wird anschließend durch die Anwendung berarbeitet (XTextRange?)

Hat jemand eine Lösung, ein Ansatz, wie ich an diese Positionen komme? Gibt es ein besseren Weg?

(weiteres zum Thema :

viewtopic.php?t=6861&start=0&postdays=0 ... tbaustein)

Nach oben