![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть набор Word-шаблонов (файлы *.dot) и маленькая утилита, которая создаёт на базе них новые Word-файлы. Всё работает, но задача в том, чтобы программа была одним файлом.
Я вижу решение в том, чтобы поместить файлы шаблонов в ресурсы программы. Но не знаю, как считать потом эти шаблоны из ресурсов. Подскажите, как это сделать. Возможно, сможете предложить альтернативное решение. Сейчас код работы с шаблонами выглядит следующим образом: Код:
procedure TfmMain.CreateDocument0;
var
TempleateFileName: string;
WordApp, Document: OleVariant;
procedure FillBookmark(BookmarkName, bText: string);
var
Range: OleVariant;
begin
if Document.Bookmarks.Exists(BookmarkName) then
begin
Range := Document.Bookmarks.Item(BookmarkName).Range;
Range.Text := bText;
end;
end;
begin
TempleateFileName := ExtractFilePath(Application.ExeName)+'Templates\0.dot';
try
WordApp := GetActiveOleObject('Word.Application');
except
try
WordApp := CreateOleObject('Word.Application');
except
on E: Exception do
begin
MessageBox(Self.Handle, PChar(E.Message), PChar(fmMain.Caption), MB_OK+MB_ICONERROR);
Exit;
end;
end;
end;
try
Document := WordApp.Documents.Add(TempleateFileName, False);
FillBookmark('ObjectType', edt0ObjectType.Text);
...
WordApp.Visible := True;
WordApp.Activate;
finally
WordApp := Unassigned;
end;
end; |
|
#2
|
||||
|
||||
|
Класс TResourceStream ...
|
|
#3
|
|||
|
|||
|
Да, но вопрос в том, как прочитать потом из потока. То есть нужно понять, что использовать вместо этой строки:
Код:
Document := WordApp.Documents.Add(TempleateFileName, False); |
|
#4
|
||||
|
||||
|
Из ресурса сохранить в папочку Temp и грузить оттуда. Если Word не умеет из IStream грузить.
|
|
#5
|
|||
|
|||
|
Да, тоже про это думал, но пока остаётся как запасной вариант, так как такой вариант накладывает определённые ограничения.
|