Cursor in Tabelle setzen (gelöst)

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

Moderator: Moderatoren

LokutusvB
***
Beiträge: 77
Registriert: Di, 03.11.2009 09:52

Cursor in Tabelle setzen (gelöst)

Beitrag 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
Zuletzt geändert von LokutusvB am Fr, 06.11.2009 10:00, insgesamt 1-mal geändert.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Cursor in Tabelle setzen

Beitrag 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() ) 
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
LokutusvB
***
Beiträge: 77
Registriert: Di, 03.11.2009 09:52

Re: Cursor in Tabelle setzen

Beitrag 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?
LokutusvB
***
Beiträge: 77
Registriert: Di, 03.11.2009 09:52

Re: Cursor in Tabelle setzen, einen Schritt weiter

Beitrag 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));
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Cursor in Tabelle setzen

Beitrag von komma4 »

in der letzten Zeile Deines Codes.

es wird eine Adresse in URL-Notation erwartet, nix mit c:\
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
LokutusvB
***
Beiträge: 77
Registriert: Di, 03.11.2009 09:52

Re: Cursor in Tabelle setzen

Beitrag 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
Antworten