Entwickler-Ecke

Sonstiges (Delphi) - delphi projekt als word speichern


akate-makate - Di 02.03.10 14:20
Titel: delphi projekt als word speichern
Hallo.Ich muss mich erstmal fuer mein schlechtes deutsch entschuldigen.
Ich hab also eine frage.Ich will mit Delphi eine Tabelle machen.In der erstel Spalte will ich dass die Summe zweier Zahlen angezeigt wird und in der naechsten Spalte die Differenz angezeigt wird.Das habe ich alles mit tlabel und tedit gemacht und auch den Code um zwei Zahlen zu addieren und subtrahieren geschrieben.Nun will ich aber dass ich dass Project als Word speicher,ich meine dass wenn ich diese doc datei oeffne dann sehe ich eine Tabelle mit den zwei Resultaten und wenn ich die Summe und die Differnez zwei anderer Zahlen finden will dann gehe ich zum Delphi Projekt,gebe die zahlen ein und wenn ich wieder die doc Datei oeffne sehe ich das Resultat in einer Τabelle wieder.Vielen Dank.


Narses - Di 02.03.10 14:29

Moin und :welcome: im Forum!

user profile iconakate-makate hat folgendes geschrieben Zum zitierten Posting springen:
hallo...ich muss mich erstmal fuer mein schlechtes deutsch entschuldigen...
Du solltest dich nicht entschuldigen, sondern statt "..." mal vernünftige Satzzeichen und Absätze benutzen, auch die Groß-/Kleinschreibung soll nicht wehtun, ich merke jedenfalls nix davon. :|

user profile iconakate-makate hat folgendes geschrieben Zum zitierten Posting springen:
nun will ich aber dass ich dass project als word speicher...ich meine dass wenn ich diese doc datei oeffne dann sehe ich eine tabelle mit den zwei resultaten und
Das ist so einfach nicht möglich, wie du dir das vorstellst. Du könntest: :idea:cu
Narses


platzwart - Di 02.03.10 23:21

... oder falls vorhanden, mit Nevrona RaveReports ein Template anlegen und ins RTF-Format exportieren...


akate-makate - Mi 03.03.10 00:32

Wirklich vielen dank fuer die Antworten.Hoffe sie sind hilfreich.Werde sie mir morgen frueh anschaeun.
Um wirklich zu verstehen geben was ich meine habe ich diseses video gefunden( http://www.youtube.com/watch?v=VtDRhkT8v0w ) oder das ( http://www.youtube.com/watch?v=bKZLF-h_xBM ).Das will ich mit office machen,das speichern und offnen.

Hier habe ich das was ich gemacht habe,befor ich eure antwortet gesehen habe.
Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
unit ******;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    XPManifest1: TXPManifest;
    Button4: TButton;
    Button5: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    RichEdit1: TRichEdit;
    ListView1: TListView;
    Button6: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button2Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit4.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit4.Text := FloatToStr(number1-number2);
  except
    edit4.Text:= 'error...this is not a number'  ;
    edit4.Font.Color:=clRed;
  end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  edit1.Clear;
  edit2.Clear;
  edit3.Clear;
  edit4.Clear;
  edit1.SetFocus;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit3.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit3.Text := FloatToStr(number1+number2);
  except
    edit3.Text:= 'error...this is not a number'  ;
    edit3.Font.Color:=clRed;
  end;
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  list: TlistItem;
begin
  begin
    list:=listview1.Items.Add;
    list.caption:= edit3.text;
    list.subitems.add(edit4.text);

  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  edit1.setfocus;
end;

end.

Und fuer open window habe ich das gefunden---> http://support.microsoft.com/kb/229310/de
Werde morgen eure Antworten genau anschauen.
Wirklich vielen dank.


Delete - Mi 03.03.10 00:56

Davon mal abgesehen, dass das Tutorial absolut schlecht ist, was hat das mit deinem Vorhaben zu tun mit Delphi ein Office Dokument erstellen zu wollen?


akate-makate - Mi 03.03.10 01:06

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Davon mal abgesehen, dass das Tutorial absolut schlecht ist, was hat das mit deinem Vorhaben zu tun mit Delphi ein Office Dokument erstellen zu wollen?


Ich dachte ja dass das einfacher waere zu gestallten :( .Werde mir aber die oben gegebenen Antworten ansehen,und sehen ob das einfach ist.Hoffe ich...


akate-makate - Mi 03.03.10 22:19

Hallo.Ich zeig euch mal was ich gemacht habe und stelle meine Fragen am Ende.

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
unit *******;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, ComCtrls,ComObj,ShellAPI;
  var
   Word: Variant;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    XPManifest1: TXPManifest;
    Button4: TButton;
    Button5: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    RichEdit1: TRichEdit;
    ListView1: TListView;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    wrdApp, wrdDoc: Variant;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  // Create an instance of Word and make it visible
  wrdApp := CreateOleObject('Word.Application');
  wrdApp.Visible := True;
  // Create a new document
  wrdDoc := wrdApp.Documents.Add();
  wrdDoc.Select;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit4.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit4.Text := FloatToStr(number1-number2);
  except
    edit4.Text:= 'error...this is not a number'  ;
    edit4.Font.Color:=clRed;
  end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  edit1.Clear;
  edit2.Clear;
  edit3.Clear;
  edit4.Clear;
  edit1.SetFocus;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit3.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit3.Text := FloatToStr(number1+number2);
  except
    edit3.Text:= 'error...this is not a number'  ;
    edit3.Font.Color:=clRed;
  end;
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  list: TlistItem;
begin
  begin
    list:=listview1.Items.Add;
    list.caption:= edit3.text;
    list.subitems.add(edit4.text);

  end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  ShellExecute(Application.Handle, 'open''C:\Test.doc'nilnil, SW_SHOW);
end;

procedure TForm1.Button8Click(Sender: TObject);

begin
  Word:=CreateOLEObject('Word.Application');
  Word.Visible:=True;
  Word.Documents.Open('C:\delphi_test2.doc');
  Word.WordBasic.Insert(edit3.text);
  Word.WordBasic.Insert('    ');
  Word.WordBasic.Insert(edit4.text);
  Word.WordBasic.Insert('    ');
  Word.Documents.Save;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  Word.Documents.Close;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  edit1.setfocus;
end;

end.


Das was ich fragen will ist:die zwei Nummer werden in Word immer in der ersten Zeile gespeichert,zum Beispiel 32 34 12 45.Wie kann ich machen das die unten drunter gespeichert werden,zum Beispiel
32 34
12 45
Der code liegt in hier oben in der Zeile 136.
Weil ich soweit gekommen bin,weis jemand vielleicht jeztz wie ich diese Nummern in einer Tabelle einsetze?.
Vielen Dank!


platzwart - Mi 03.03.10 22:42

Einfach nach jeder zweiten Zahl einen Zeilenumbruch einfügen?


akate-makate - Mi 03.03.10 23:10

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Einfach nach jeder zweiten Zahl einen Zeilenumbruch einfügen?

Und wie mache ich das?
Weil ich soweit gekommen bin,weis jemand vielleicht jeztz wie ich diese Nummern in einer Tabelle einsetze?
Danke.


akate-makate - Do 04.03.10 15:27

Hab gerade fertig gemacht.Glaube funktioniert super.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
unit ******;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, ComCtrls,ComObj,ShellAPI;
  var
   Word: Variant;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    XPManifest1: TXPManifest;
    Button4: TButton;
    Button5: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    RichEdit1: TRichEdit;
    ListView1: TListView;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    wrdApp, wrdDoc: Variant;
  end;

var
  Form1: TForm1;
  i: integer;
implementation

{$R *.dfm}



procedure TForm1.Button10Click(Sender: TObject);
begin
  Word.Documents.Save;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
  listview1.DeleteSelected;
end;

procedure TForm1.Button12Click(Sender: TObject);

begin
if i=2 then begin
  Word.ActiveDocument.FormFields.Item('result3').Result := edit3.Text;
  Word.ActiveDocument.FormFields.Item('result4').Result := edit4.Text;
end;
if i=3 then begin
  Word.ActiveDocument.FormFields.Item('result5').Result := edit3.Text;
  Word.ActiveDocument.FormFields.Item('result6').Result := edit4.Text;
end;
if i=4 then begin
  Word.ActiveDocument.FormFields.Item('result7').Result := edit3.Text;
  Word.ActiveDocument.FormFields.Item('result8').Result := edit4.Text;
end;
if i=5 then begin
  Word.ActiveDocument.FormFields.Item('result9').Result := edit3.Text;
  Word.ActiveDocument.FormFields.Item('result10').Result := edit4.Text;
end;
i:=i+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Create an instance of Word and make it visible
  wrdApp := CreateOleObject('Word.Application');
  wrdApp.Visible := True;
  // Create a new document
  wrdDoc := wrdApp.Documents.Add();
  wrdDoc.Select;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit4.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit4.Text := FloatToStr(number1-number2);
  except
    edit4.Text:= 'error...this is not a number'  ;
    edit4.Font.Color:=clRed;
  end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  edit1.Clear;
  edit2.Clear;
  edit3.Clear;
  edit4.Clear;
  edit1.SetFocus;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  number1,number2: double;
begin
  try
    edit3.Font.Color:= clnone;
    number1:= StrToFloat(edit1.Text);
    number2:= StrToFloat(edit2.Text);
    edit3.Text := FloatToStr(number1+number2);
  except
    edit3.Text:= 'error...this is not a number'  ;
    edit3.Font.Color:=clRed;
  end;
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  list: TlistItem;
begin
  begin
    list:=listview1.Items.Add;
    list.caption:= edit3.text;
    list.subitems.add(edit4.text);

  end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  ShellExecute(Application.Handle, 'open''C:\Users\****\Desktop\beispiel.doc'nilnil, SW_SHOW);
end;

procedure TForm1.Button8Click(Sender: TObject);

begin
  i:=1;
  Word:=CreateOLEObject('Word.Application');
  Word.Visible:=True;
  Word.Documents.Add(Template:='C:\Users\*****\Desktop\beispiel.doc');
  Word.ActiveDocument.FormFields.Item('result1').Result := edit3.Text;
  Word.ActiveDocument.FormFields.Item('result2').Result := edit4.Text;
  i:=i+1;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  Word.Documents.Close;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  edit1.setfocus;
end;

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  edit3.text:= item.Caption;
  edit4.Text:= item.SubItems[0];
end;

end.