Bild einfügen: 2. Bild ersetzt das erste

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

Moderator: Moderatoren

Carsten H
**
Beiträge: 29
Registriert: Di, 28.11.2006 23:29

Bild einfügen: 2. Bild ersetzt das erste

Beitrag von Carsten H »

Ich nutze den Writer von Openoffice 4.1.10, um Dokumente automatisiert aus einem Delphi-Programm zu erstellen.
Da die bisherigen Anwendungen funktionieren, würd ich die Version nur ändern wollen, wenn es unbedingt sein muss.

Aktuell will ich eine Datei erstellen, die wie folgt aussieht, indem ich für jede Zeile InsertText und InsertPara aufrufe:

Code: Alles auswählen

procedure TOpenOffice.InsertText(Text:string);
var
  OODispatcher:variant;
  Ar,SM:variant;
begin
  SM:=CreateOleObject('com.sun.star.ServiceManager');
  OODispatcher:=SM.CreateInstance('com.sun.star.frame.DispatchHelper');
  Ar:=VarArrayCreate([0,0],varVariant);
  Ar[0]:=SM.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
  Ar[0].Name:='Text';
  Ar[0].Value:=Text;
  OODispatcher.ExecuteDispatch(FDocument.GetCurrentController.GetFrame,'.uno:InsertText', '', 0, Ar);
  OODispatcher:=Unassigned;
  Ar:=Unassigned;
  SM:=Unassigned;
end;

Code: Alles auswählen

procedure TOpenOffice.InsertPara; // Zeilenumbruch
var
  OODispatcher:variant;
  Ar,SM:variant;
begin
  SM:=CreateOleObject('com.sun.star.ServiceManager');
  OODispatcher:=SM.CreateInstance('com.sun.star.frame.DispatchHelper');
  Ar:=VarArrayCreate([0,0],varVariant);
  OODispatcher.ExecuteDispatch(FDocument.GetCurrentController.GetFrame,'.uno:InsertPara', '', 0, Ar);
  OODispatcher:=Unassigned;
  Ar:=Unassigned;
  SM:=Unassigned;
end;
Es kommt das Gewünschte dabei raus:

Bild

Soweit so gut, jetzt soll aber vor jeder Zeile ein Icon stehen.

Unten die dafür benutzte Methode InsertGraphic, die ich vor Inserttext aufrufe.

Das Ergebnis ist ein einziges (das letzte geladene) Icon und kein Text:

Bild

Klicke ich im Dokument rum, während die Fernsteuerung läuft, so dass das gerade geladene Icon den Fokus verliert, werden weitere Bilder eingefügt.
Ich nehme daher an, dass das Problem ist, dass das Icon den Fokus hat und dadurch ein erneutes Laden das alte Icon überschreibt. Warum der Text nicht erscheint, ist mir aber noch etwas rätselhaft.
Fragen: Wie werde ich den Fokus nach dem Laden der Grafik los? Hab versucht, den Cursor zu setzen mit GoToEndOfLine, aber das blieb ohne sichtbare Auswirkung. Oder gibt es einen anderen Ansatz wie man das Problem löst? Welche Argumente müsste ich dem InsertGraphic mitgeben, um die Größe des Bilds zu beeinflussen? Width und Height hatten keinen Effekt.

Code: Alles auswählen

procedure TOOWriter.InsertGraphic(Datei:string);
var
  OODispatcher:variant;
  Ar,SM:variant;
begin
  SM:=CreateOleObject('com.sun.star.ServiceManager');
  OODispatcher:=SM.CreateInstance('com.sun.star.frame.DispatchHelper');
  Ar:=VarArrayCreate([0,0],varVariant);
  Ar[0]:=SM.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
  Ar[0].Name:='FileName';
  Ar[0].Value:='file:///'+ StringReplace(Datei, '\', '/', [rfReplaceAll]);
  OODispatcher.ExecuteDispatch(FDocument.GetCurrentController.GetFrame,'.uno:InsertGraphic', '', 0, Ar);
  Ar:=VarArrayCreate([0,0],varVariant);
  OODispatcher.ExecuteDispatch(FDocument.GetCurrentController.GetFrame,'.uno:SetAnchorToChar', '', 0, Ar);  // "als zeichen" formatieren

  OODispatcher:=Unassigned;
  Ar:=Unassigned;
  SM:=Unassigned;
end;
Im festgetackerten Beitrag dieses Forums wurde gebeten, auf tote Links hinzuweisen. Gleich die ersten Links führen nicht mehr zu einen Ziel.
Meine Suche nach einer Doku der möglichen Befehle und Parameter war bisher noch erfolglos.

Carsten
Benutzeravatar
miesepeter
********
Beiträge: 2252
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Bild einfügen: 2. Bild ersetzt das erste

Beitrag von miesepeter »

Carsten H hat geschrieben: Di, 23.09.2025 10:48
Im festgetackerten Beitrag dieses Forums wurde gebeten, auf tote Links hinzuweisen. Gleich die ersten Links führen nicht mehr zu einen Ziel.
Meine Suche nach einer Doku der möglichen Befehle und Parameter war bisher noch erfolglos.

Carsten
Sei so gut und nenne die Stellen, so dass man das evtl. berichtigen könnte.

EDIT
Der unten genannte Beitrag wurde geändert. Direkte Downloadlinks zum Buch von Pitonyak (deutsche Version) wurden hinzugefügt:
Carsten H
**
Beiträge: 29
Registriert: Di, 28.11.2006 23:29

Re: Bild einfügen: 2. Bild ersetzt das erste

Beitrag von Carsten H »

Die beiden kursiven Links lassen sich nicht anklicken und das verlintke Thema viewtopic.php?f=18&t=75273 führt Links auf die in einem 404 enden.

Dass es um diesen Beitrag geht, kann hoffentlich rüber:
viewtopic.php?t=1553

Carsten
Benutzeravatar
miesepeter
********
Beiträge: 2252
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Re: Bild einfügen: 2. Bild ersetzt das erste

Beitrag von miesepeter »

Carsten H hat geschrieben: Di, 23.09.2025 15:24 Die beiden kursiven Links lassen sich nicht anklicken

Dass es um diesen Beitrag geht, kann hoffentlich rüber:
viewtopic.php?t=1553

Carsten
In dem erwähnten Beitrag steht doch deutlich:
Kursiv geschriebene ULRs sind nicht mehr gültig.

Etwas darunter findet sich die neue Adresse (es geht wohl um die deutsche Version von Pitonyaks Buch zu StarBasic). Außerdem wurden dort die Direkt-Links zum Download des Buchs angegeben (PDF- und ODT-Version).

Oder - verstehe ich etwa etwas falsch?!
Carsten H
**
Beiträge: 29
Registriert: Di, 28.11.2006 23:29

Re: Bild einfügen: 2. Bild ersetzt das erste

Beitrag von Carsten H »

Stimmt, steht oben mit dem kursiv. Man liest ja nicht immer alles am Stück von oben in einem Rutsch durch. Vorschlag für intuitiveres Design: Das Link-hafte Aussehen entfernen und ex davor schreiben, also so:

Code: Alles auswählen

Seit inzwischen vielen Jahren, existiert auf (ex http: //www. uni-due.de/ ~abi070/ooo.html) die von Volker Lenhardt...
Wobei: Welchen Nährwert hat ein toter Link überhaupt?

Das hier kann doch entfallen, oder steh ich auf dem Schlauch? In dem Link wird nur wieder der tote Link genannt und man kommt nicht weiter:
Aktuelle Hinweise des Übersetzers findet ihr unter: viewtopic.php?f=18&t=75273.
Der hier ist auch tot:
http://robert.familiegrosskopf.de/index_2.php

Hat zu meiner eigentlichen Frage oben evtl. noch jemand eine Idee?

Carsten
Antworten