Autor Beitrag
Steini1980
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

WIN 2000, SuSE 9.3 Pro
Delphi 6 Enterprise, Lazarus 0.9.16b, PHP (Dreamweaver MX)
BeitragVerfasst: Mo 02.03.09 20:17 
Hallo ich habe ein Rechnungsformular in MS Word und möchte nach dem Befüllen des Formulars aus Delphi alle Felder neu berechnen. Normalerweise geschieht dies erst, wenn ich auf die Druckvorschau oder auf Drucken gehe. Ich möchte aber, dass Standardmäßig alle Felder aktualisiert werden.

Ich habe schon lange Zeit danach gegoogelt und zu folgendem Macro gekommen, und habe versucht dies in Delphi umzusetzen. Offenbar bin ich zu blöd:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Sub UpdateAllFields()
   Dim aStory As Range
   Dim aField As Field

   For Each aStory In ActiveDocument.StoryRanges
      For Each aField In aStory.Fields
         aField.Update
      Next aField
   Next aStory
End Sub


Wie müsste der Code dann in Delphi aussehen? Angefangen hab ich mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
For i:=0 to wDoc.StoryRanges.Count do begin
  // Nur hier komme ich einfach nicht auf die einzelnen Felder:
  For j:=0 to ??? do begin
    // ???
  end;
end;
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 02.03.09 20:56 
Hallo,

also
Zitat:

For i:=0 to wDoc.StoryRanges.Count do begin

ist schonmal suboptimal ;-), da zähslt du auf alle Fälle ein Item zuviel
entweder

ausblenden Delphi-Quelltext
1:
For i:=0 to wDoc.StoryRanges.Count-1 do begin					

oder
ausblenden Delphi-Quelltext
1:
For i:=1 to wDoc.StoryRanges.Count do begin					


2. wäre für mich richtig, die items in Word fangen immer bei 1 an.

Zeig mal bitte deinen kompletten Code, also auch, wie Du dich mit Word verbindest.

ansonsten haben die Elemente meist eine item-Eigenschaft (runde Klammer!).
Du müßtest sinnbildlich sowas stehen haben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Var Astory,Afield:variant;
For i:=1 to wDoc.StoryRanges.Count do 
  begin
    astory:=wDoc.StoryRanges.item(i);
    for j:=1 to astory.fields.count do
      begin
        Afield:=astory.fields.item(j);
        afield.update; 
      end;
  end;

ist aber völlig ungetestet.

Wobei, läßt sich das aktualisieren nicht auch in den Optionen generell einstellen?

Gruß Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)