hallo Leutz,
Ich hab hier einen guten Tipp gefunden, mit welchem ich ein tStringGrid nach MS Word bringe.
Delphi-Quellcode:
var
WordApp,WordTable: OLEvariant;
iRows, iCols, iGridRows, jGridCols: Integer;
begin
if form5.Active = true then
begin
Screen.Cursor := crHourglass;
try
// Create Word Instance
WordApp := CreateOleObject('Word.Application');
except
ShowMessage('Cannot start MS Word.');
Screen.Cursor := crDefault;
Exit;
end;
try
// Open a Word Document
WordApp.Documents.Add(Template := ExtractFilePath(ParamStr(0))+'\doks\auftrag.dot');
// Show Word
WordApp.Visible := True;
// Artikel grid einfügen \\
iCols := form5.grid.ColCount;
iRows := form5.grid.RowCount;
// Tabelle einfügen
WordTable := WordApp.ActiveDocument.Tables.Add(WordApp.ActiveDocument.FormFields.Item('artikel').Range, iCols, iRows);
// Tabelle ausfüllen mit Stringgrid Daten
for iGridRows := 1 to iRows do
for jGridCols := 1 to iCols do
WordTable.Cell(iGridRows, jGridCols).Range.Text := form5.grid.Cells[jGridCols-1, iGridRows-1];
wordapp.PrintOutOld;
wordapp.Documents.Close(SaveChanges := 0);
wordapp.quit;
finally
WordApp := Unassigned;
Screen.Cursor := crDefault;
end;
end;
end;
Nun, eigentlich funktioniert alles soweit gut. Nur schreibt der mit immer doppelt soviele cols, statt 5 macht er 10 usw.
Könnte mir vielleicht jemand einen Tipp geben, warum er das tut?
Besten Dank für eure Hilfe
greetz
nico44
[edit]
Habe gerade gemerkt, dass das Problem nur auftritt wenn ich mehr Zeilen als Spalten habe, d.h. wenn ich gleich viele Zeilen wie Spalten habe stimmt. Ich erhalte somit auch eine Fehlermeldung "das angeforderte Element ist nicht in der Sammlung vorhanden", wenn ich weniger Zeilen wie Spalten habe.
greetz
nico44
[edit=sakura] M$ -> MS - Du nutzt es, also kein Grund andern die Suche zu erschweren... Mfg, sakura[/edit]