Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#5

AW: Mal ne "Wie macht denn Ihr das"-Frage

  Alt 15. Dez 2017, 13:50
Wenn man bei Word bleibt, hat man die Möglichkeit Formulare zu nutzen.

Der Kunde liefert eine Vorlage seines "Geschäftsbriefes" (oder was man auch immer haben möchte).

In diese Vorlage werden an den Stellen, wo programmatisch was eingefügt werden soll, Formularefelder platziert. Die kann man dann befüllen.
Delphi-Quellcode:
// FWordDoc sei ein Worddokument, auf das man in Delphi Zugriff hat.
Var
  ovAnrede : OleVariant;
  sAnrede : String;
...
begin
  ovAnrede := 'Anrede';
...
  // Irgendwo aus 'ner Datenbank oder dem Formular oder ...
  sAnrede := 'Sehr geehrte Damen und Herren,';
...
  FWordDoc.FormFields.Item(ovAnrede).Result := sAnrede;
...
In der Wordvorlage muss es nun ein Formularfeld mit dem Namen Anrede geben, dieses wird dann mit der Zeichenfolge 'Sehr geehrte Damen und Herren,' befüllt.

Dann hat man in Word die Möglichkeit, Textmarken zu vergeben. Die sind geeignet, wenn an einer Stelle "beliebiger Inhalt" eingefügt werden soll, z. B. Tabellen, Grafiken, irgendwelche textliche "Prosa" ...

Zu 'ner Textmarke kommt man z. B. mit
Delphi-Quellcode:
procedure GeheZuTextmarke(aTextmarke : String);
var
  vParam : OleVariant;
begin
  vParam := aTextmarke;
  FWordDoc.Bookmarks.Item(vParam).Select;
end;
Text bekommt man an die so "gewählte Stelle" mit
Delphi-Quellcode:
procedure SchreibeText(aText : String);
begin
  FWordDoc.Selection.TypeText(aText);
end;
Den Aufruf dieser Methoden kann man dann beliebig wiederholen. Der Text wird jeweils an der Cursorposition im Worddokument eingefügt. Natürlich könnte man dort jetzt auch 'ne Tabelle aus 'ner Datenbanbkabfrage einfügen.

Will man die Formatierung des Textes ändern, ginge das in etwa so:
Delphi-Quellcode:
procedure FormatSetzen(aFormat : String);
var
  vParam : OleVariant;
begin
  vParam := aFormat;
  WordApplication.Selection.Set_Style(vParam);
end;
aFormat muss halt nur der Name einer Formatvorlage sein, die aus Wordsicht bei der Arbeit in der gewählten Dokumentenvorlage verfügbar ist.

Eigentlich hat man da unendliche Freiheiten aus Programmsicht und auch der Kunde hat, wenn er sich an ein paar Vorgaben bezüglich der Textmarken, Formularfelder ... hält, annähernd "Narrenfreiheit".

Auf diese Weise hab' ich schonmal recht individuelle Rezeptbücher aus Datenbankinhalten erstellt. Select auf die Rezepte, die man haben möchte. Vorlage auswählen und Formularfelder für den Buchtitel befüllen. Dann zur Textmarke für das erste Rezept gehen. Rezeptnamen ausgeben. Bild mit fertig angerichtetem Rezept ausgeben. Tabelle mit den Rezeptzutaten. Und dann als Liste die einzelnen Verarbeitungsschritt. Anschließend noch 'ne Nährwerttabelle, ein Seitenwechsel und das nächste Rezept.

Wenn man für den Rezeptnamen eine Überschriftsformatierung wählt, kann man auch von Word automatisch ein Inhaltsverzeichnis generieren lassen.

Funktioniert mit Strickanleitungen, Kurzgeschichten ... natürlich ebenso flexibel. Und selbstverständlich auch mit Geschäftsbriefen, Reports ...
  Mit Zitat antworten Zitat