Word i przekazywanie paramatrów

0

Witam.

Mam taki problem. Chcę utworzyć jakiś dokument .doc , z tabelką i jakimś tekstem. Tabelka to np 2 kolumny i 2 wiersze. Zapisuje plik na dysku. Teraz chciałbym utworzyć w delphi forme z 4 editami. Wpisana wartość w editach będzie eksportowana do tego pliku .doc (do odpowiednich pól w tabelce) i drukowana do domyślnej drukarki.
Teraz pytanie jak to zrobić. Jak przekazać parametry do worda??
Proszę o jakieś nakierowanie... PLIZ

pozdrawiam

0

Możesz sobie zapisać ten dokument jako RTF, przy czym do tych pustych komórek wpisać np <#kom1>, <#kom2>. Potem otwierasz w Delphi ten plik jako txt, i robisz stringreplace. Wykorzystując pliki odwzorowane pamięciowo, można nawet duże pliki ładowac do pamięci, więc chodzi to dość szybko.

To jest jedno z możliwych rozwiązań, pewnie są lepsze i łatwiejsze.

Aha no i potem ShellExecute + 'print'

0

no tak... ale mi chodzi konkretnie o pliki .doc bo tam ma być i jakiś obrazek, tabelka jakoś ładnie sformatowana, i inne bajery których chyba w .rtf nie osiagne :-/ ... ale dzieki za odpowiedź...

0

To możesz użyć OLE (jakoś tego zawsze nie lubiłem). Tworzysz serwer OLE (CreateOLEObject) podajesz ciąg klasy (chyba Word.Application) a później używasz poleceń takich jak w VBA (oczywiście najpierw otwierasz plik). Możesz więc użyć zamieniania jednego ciągu na inny. Żeby to wszystko nie migało na ekranie, zrób sobie dla tej OleVariantowej zmiennej WordApp.Visible := Integer(False). No i tak mniej więcej to można by osiągnąć. Ale jest to kichowata opcja, bo jak Ci czasem word wyswietli jakiś Alert a jest nie widoczny, to lipa : ) W sumie nie wiem jak w Wordzie, ale w Excelu jest takie coś jak DisplayAlerts, wiec warto to dać na False.

Inna opcja to wykorzystanie komponentów. Zależy jakie masz Delphi, ale w niektórych wersjach jest coś takiego jak TWordApplication czy tam jakoś. Więc możesz tego użyć.

Jeszcze jest chyba taka opcja żeby użyć plików *_TLB.pas (type library) z Word'a. Ale to musisz mieć Worda zainstalowanego.

Poszukaj na necie, automatyzacja + Delphi + Word czy jakieś tam inne kombinacje ... + COM + OLE ...

0

Witam ponownie.

Ja również nie lubie OLE dlatego zacząłem się bawić komponentami TWordDocument i TWordApplication. Generalnie to już większość zrobiłem, pozostaje mi tylko formatowanie tabel(zmiana rozmiaru komórek w tabeli). A mianowicie zarejestrowane Makro w Wordzie generuje taki kod VB

Selection.Tables(1).Columns(1).SetWidth ColumnWidth:=75.5, RulerStyle:= _wdAdjustNone

a do delphi wrzucam np.:

wordapplication.Selection.Tables.Columns(1).SetWidth.Columnwidth := 70;

W innych przypadkach, ten przekształcony kod Delphi działa, ale w tym konkretnym nie, bo podczas wykonywania programu wyskakuje błąd : "... 'Method Columns' not supported by automation object".

Czy delphi nie potrafi zmienić rozmiaru komórki w tabeli, czy po prostu robię coś źle?

1 użytkowników online, w tym zalogowanych: 0, gości: 1