Announcement

Collapse
No announcement yet.

Word-Range versus Word-Selection

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Word-Range versus Word-Selection

    Hallo,

    Herr Kosch schreibt an anderer Stelle im Forum, zum Ausfüllen eines Wordformulars mittels Delphi sei das Range-Objekt besser geeignet als Selection.Goto weil schneller.

    Ich habe beide Versionen ausprobiert und bei mir (Delphi5 und Word2000) ist die Selectionversion 50 Prozent schneller (aber mir zu langsam). Word ist nicht sichtbar.

    Gib es noch andere Aspekte, die hier wichtig sind?

    Mein Code:

    aRange := WordDoc.Bookmarks.Item('Marke').Range;
    aRange.InsertAfter('BlaBla');

    und

    gtName := 'Marke';
    WordApp.Selection.GoTo_(gtWhat,gtWhich,EmptyParam, gtName);
    gtField := 'BlaBla';
    WordApp.Selection.InsertAfter(gtField);

    Vielen Dank

    Detlef Fricke

  • #2
    Hallo,

    in meinem Buch <i>COM/DCOM/COM+ mit Delphi</i> steht zu diesem Thema folgendes: <br><i>Für Word besteht ein Dokument aus einer Vielzahl von einzelnen Objekten und Wörtern. Bevor irgend etwas mit dem Dokumentinhalt gemacht werden kann, muß der Controller zuerst das zu bearbeitente Element exakt definieren. Dazu stehen zwei prinzipiell unterschiedliche Objekte zur Verfügung - das Range-Objekt und das Selection-Objekt. Beide Objekte unterscheiden sich gravierend voneinander:<br>
    - Im Dokument kann es nur ein Selection-Objekt geben, das zudem eine visuelle Rückmeldung der aktuellen Cursorposition an den Anwender zurückliefert. Mit dem Zugriff auf die Benutzerschnittstelle ist das Selection-Objekt auch langsamer als das Range-Objekt. <br>
    - Im Dokument können beliebig viele Range-Objekte gleichzeitig vorkommen - somit ist das Range-Objekt wesentlich flexibler. Range-Objekte sind unabhängig vom Selection-Objekt. <br>
    Ein Range-Objekt kennzeichnet den zu bearbeitenden Bereich, indem die Start- und Endposition festgelegt wird. Ist ein solches Objekt definiert, kann der Controller über die Eigenschaften und Methoden des Objekts den Dokumentinhalt bearbeiten. Ein Range-Objekt kann sich nur auf die aktulle Cursorpostition oder auch auf das komplette Dokument beziehen. </i>

    Die Performance-Unterschiede machen sich also spätestens dann bemerkbar, wenn es eine sichtbare Benutzeroberfläche gibt, die vom Selection-Objekt synchronisiert werden muss.

    Die Performance von Range reicht aus, wenn nur wenige Daten eingefügt werden müssen. Im Fall von mehreren hundert Werten würde ich zu der Methode wechseln, die ich auch in dem o.g. Buch vorgestellt habe. Das eigene Delphi-Programm generiert selbst einen RTF-Datenblock, der mit <b>einem</b> Aufruf an der entsprechenden Stelle in das Word-Dokument eingefügt wird

    Comment

    Working...
    X