Seite 1 von 1

Cursor in Tabelle setzen (gelöst)

Verfasst: Do, 05.11.2009 14:46
von LokutusvB
Hallo,

ich möchte einen Cursor in eine Tabelle eines sWriter Dokumentes setzen, um dort Text aus einem anderen Dokument einzufügen. Dafür habe ich mich im Netz informiert und folgendes zurecht "gebastelt":

Code: Alles auswählen

ctrl := Document.getCurrentController;
tables := Document.getTextTables;
aktTable := tables.getByIndex(tableIndex);
bm := aktTable.getCellbyPosition(xpos, ypos);
ctrl.Select(bm);
ctrl.InsertDocumentFromUrl('D:\OO_Test\testbaustein.odt', VarArrayCreate([0, - 1], varVariant));
Allerdings meckert mein Delphi-Compiler, das die Methode "InsertDocumentFromUrl" nicht vom Automatisierungsobjekt unterstützt wird. Ist dann getCurrentController nicht der Cursor, den ich für die Insert-Methode benötige? Wie mache ich das richtig?

Viele Grüße
LvB

Re: Cursor in Tabelle setzen

Verfasst: Do, 05.11.2009 15:20
von komma4

Code: Alles auswählen

oTabelle = ThisComponent.getTexttables().getByIndex( 0 ) 
oZelle = oTabelle.getCellByName( "A2" ) 
oCursor = oZelle.createTextCursor()
oCursor.insertDocumentFromURL( ConvertToURL( "d:\text2.txt" ), Array() ) 

Re: Cursor in Tabelle setzen

Verfasst: Do, 05.11.2009 15:58
von LokutusvB
Danke für deine Hilfe, leider funktioniert es immer noch nicht. Wo könnte der Fehler noch liegen?

Code: Alles auswählen

procedure insert(tableIndex, xpos, ypos: Integer);
var
  ctrl, tables, aktTable, bm: Variant;
begin 	
  tables := Document.getTextTables;
  aktTable := tables.getByIndex(tableIndex);
  bm := aktTable.getCellbyPosition(xpos, ypos);
  // bm.setString('cursor'); // Debug -> richtige Zelle ermittelt
  ctrl := bm.createTextCursor;  
  ctrl.InsertDocumentFromURL('D:\OO_Test\testbaustein.odt', VarArrayCreate([0, - 1], varVariant));  
end;
Der Pfad zum Dokument ist soweit richtig. Gebe ich testweise ein Dokument an, was nicht vorhanden ist, kommt leider keine Fehlermeldung. Woran könnte es jetzt noch liegen, das kein anderes Dokument bzw. dessen Text einfgefügt wird?

Re: Cursor in Tabelle setzen, einen Schritt weiter

Verfasst: Fr, 06.11.2009 09:29
von LokutusvB
Guten Morgen,

ich bin nun einen Schritt weiter. Der Cursor wird nun endlich an die richtige Stelle gesetzt. Allerdings wird noch immer kein Text eingefügt. Wo könnte das Problem jetzt noch liegen?

Code: Alles auswählen

ctrl := Document.getCurrentController.ViewCursor;
tables := Document.getTextTables;
aktTable := tables.getByIndex(tableIndex);
bm := aktTable.getCellbyPosition(xpos, ypos);
cursor := bm.createTextCursor;  
ctrl.gotoRange(cursor, false);
cursor.InsertDocumentFromUrl('C:\test.txt', VarArrayCreate([0, - 1], varVariant));

Re: Cursor in Tabelle setzen

Verfasst: Fr, 06.11.2009 09:36
von komma4
in der letzten Zeile Deines Codes.

es wird eine Adresse in URL-Notation erwartet, nix mit c:\

Re: Cursor in Tabelle setzen

Verfasst: Fr, 06.11.2009 09:57
von LokutusvB
Danke, und schon geht es. Du hast in deinem letzten Beitrag schon ConvertToUrl geschrieben. Mein Fehler, das ich das nicht beachtet habe.

Trotzdem Danke für deine geduldige Hilfe! :-)

Viele Grüße
LvB