Главная страница
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.012 c
3-20383
kiko
2003-07-15 17:49
2003.08.07
Как отстрелить пользователей IB перед бакапом


1-20539
Borealis
2003-07-25 23:28
2003.08.07
TTreeView, StateImages, StateIndex:=0


1-20550
Nucl
2003-07-23 18:03
2003.08.07
Как определить компонент на котором фокус


14-20779
BROTHER-3
2003-07-21 20:46
2003.08.07
Где найти Delphi 7


1-20570
freeek
2003-07-24 10:28
2003.08.07
Extended to str