Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Работа с Word.Application...   Найти похожие ветки 

 
Сергей Енин   (2003-07-23 13:11) [0]

Вопрос собственно,не один:
1)можно ли загрузить документ не из файла, а из потока или BLOB-поля таблицы БД?
2)каким образом можно вставить свои данные в определенные места документа?


 
VJack   (2003-07-23 14:24) [1]

1 можно вроде -

function TCriptoStream.Read(var Buffer; Count: Longint): Longint;
var
j, p: Longint;
Buf: array of byte;
begin
p := Position;
SetLength(Buf,Count);
Result := inherited Read(Buffer,Count);
Move(Buffer,Pointer(Buf)^,Count);
for j := 0 to Count - 1 do
Buf[j]:= Buf[j] Xor ((p + j) mod MOD_OFFSET);
Move(Pointer(Buf)^,Buffer,Count);
Buf := nil;
end;

function TCriptoStream.Write(const Buffer; Count: Longint): Longint;
var
j, p: Longint;
Buf: array of byte;
begin
p := Position;
SetLength(Buf,Count);
Move(Buffer,Pointer(Buf)^,Count);
for j := 0 to Count - 1 do
Buf[j] := Buf[j] Xor ((p + j) mod MOD_OFFSET);
Result := inherited Write(Pointer(Buf)^,Count);
Buf := nil;
end;

извини если не так вопрос понял...

2 - определяешь закладки в ворде и потом что-то вроде
procedure TfrmMain.mnuWordfiledocClick(Sender: TObject);
var
MSWord: Variant;
tmpSL: TStringList;
begin
tmpSL := TStringList.Create;
try
TextFromQuery(tmpSL, sSeparator);
try{works with Word 95 and Word 97 both}
MSWord := CreateOleObject("Word.Basic");
MSWord.AppShow;
MSWord.FileNew;
MSWord.Insert(tmpSL.Text);
{moves the active end of the selection to the beginning of the document}
MSWord.StartOfDocument(1);
MSWord.FieldSeparator(sSeparator);
MSWord.TextToTable(ConvertFrom := 3{user def field separator},
NumColumns := viQuery.FieldCount);
MSWord.CenterPara;
except
on Exception do {take care about all exception here}
Application.MessageBox(PChar(Exception(ExceptObject).Message),
PChar(sCaption), MB_ICONSTOP);
end;//inner try
finally
tmpSL.Free;
end;//outer try
end;


 
Serginio   (2003-07-23 14:47) [2]

Word вроде поддерживает IPersistStreamInit и IPersistStorage.
В любом случае посмотри TOleContainer, но он при SaveToStream записывает свои данные. Можешь переопределить или написать свой аналог.


 
KSergey ©   (2003-07-23 15:04) [3]

Сергей Енин (23.07.03 13:11)
2)каким образом можно вставить свои данные в определенные места документа?


Можно в шаблоне в нужные места свтавить некую уникальную комбинацию символов (например, %1, %2 - значение переменной 1 и переменной 2) и просто заменой исправить на нужные значения из прграммы.



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
1-20492
miwa
2003-07-25 11:26
2003.08.07
Обламываюсь с диалоговыми окнами.


14-20771
Nikolay M.
2003-07-21 16:22
2003.08.07
Продолжение карьеры программиста - ?


1-20600
Opryshok
2003-07-23 13:20
2003.08.07
как привести String к array


8-20633
Boriss
2003-04-14 15:31
2003.08.07
32 bits -> 24 bits


6-20647
viksoft
2003-05-14 10:25
2003.08.07
Передача файла по UDP - чего то не допонимаю