Einzelnen Beitrag anzeigen

bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#1

OpenOffice Selektiertes Textfeld

  Alt 21. Okt 2022, 11:46
Hallo zusammen,

ich versuche mich gerade an der OLE Automation von Open / Libre Office.

Konkret will ich die Eigenschaften von einem in OpenOffice aktuell selektieren Textfeld abfragen. Im WWW findet man hier und da ein paar Codeschnipsel, die man zusammensetzen kann.

Ich kann auf selektierten Text zugreifen:
Delphi-Quellcode:
var Selections:Variant;
    Sel:Variant;
    TextFieldEnum, TextField, Master:Variant;

  Selections:=myDoc.getCurrentSelection;
  TextFieldEnum := Selections.getByIndex(0).createEnumeration;
  if Selections.supportsService('com.sun.star.text.TextRanges') then begin
    Sel:=Selections.getByIndex(0);
    msgbox(Sel.String);
  end;
Und ich kann durch alle Textfelder iterieren und auf deren Eigenschaften zugreifen:
Delphi-Quellcode:
  TextFieldEnum := myDoc.getTextFields.createEnumeration;
  While TextFieldEnum.hasMoreElements do begin

     TextField := TextFieldEnum.nextElement;
     Master := TextField.getTextFieldMaster;

     If TextField.supportsService('com.sun.star.text.textfield.DateTime') Then
        msgbox('Date/time')
     Else If TextField.supportsService('com.sun.star.text.textfield.Annotation') Then
        msgbox('Annotation')
     Else
        msgbox(Master.Name);
  end;
Ich bräuchte aber die Eigenschaften des Selektierten Textfeldes, falls eins selektiert ist. In etwa so:
Delphi-Quellcode:
  Selections:=myDoc.getCurrentSelection;
  TextFieldEnum := Selections.getByIndex(0).createEnumeration;
  if Selections.supportsService('com.sun.star.text.TextRanges') then begin
    Sel:=Selections.getByIndex(0);
    if Sel.isTextField then // das gibt es nicht
      msgbox(Sel.Name);
  end;
Hat jemand sowas schon mal gemacht, oder eine Idee?
  Mit Zitat antworten Zitat