AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mal ne "Wie macht denn Ihr das"-Frage

Ein Thema von TigerLilly · begonnen am 15. Dez 2017 · letzter Beitrag vom 15. Dez 2017
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#1

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

  Alt 15. Dez 2017, 12: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz