Форум: "Основная";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
ВнизКак в моей программе просмативать документы Word`а? Найти похожие ветки
← →
leonidus © (2005-12-20 13:27) [0]Нужно написать простую программу которая умеет только отображать doc-файлы с картинками и загружать их диска в зависимости от нажатой кнопки. Т.е. есть скажем три файла
doc1.doc
doc2.doc
doc3.doc
на форме вероятно должен лежать TOleContainer, а также две кнопку "Вперед" и "Назад" жмем "Вперед" загружается doc1.doc, жмем еще раз, загружается doc2.doc ну и т.д.
Я делаю так:
OleContainer1.CreateObjectFromFile("doc1.doc",false);
при этом документ загружается, но во-первых фон у документа не белый как если отрыть doc1.doc в Word`е, а во-вторых цветность картинки цветов 256 не больше, хотя в Word`е эта картинка полноцветная. Как можно победить такое безобразие?
← →
Romkin © (2005-12-20 13:57) [1]Положи на форму MainMenu (пустое, но форме назначенное), простую панель с выравниванием alTop, и статусную панель. После загрузки дай OleContainer1.DoVerb(ovPrimary) и посмотри, что получится
← →
LORAN (2005-12-20 14:39) [2]Попробуй так
olecontainer1.CreateObjectFromFile("c:\doc1.doc",false);
oleContainer1.DoVerb(ovShow);
olecontainer1.PaintTo(Handle, 200, 200);
← →
leonidus © (2005-12-20 15:03) [3]Дык после DoVerb документ красиво открывается в контейнере, но тут же возникает куча проблем, в частности в документе отобразаются линейки слева и с права, а так же панели инструментов. В общем-то панели мне удалось удалить:
procedure TForm1.OleContainer1Activate(Sender: TObject);
begin
OleContainer1.OleObject.CommandBars.Item["Standard"].Visible:=false;
OleContainer1.OleObject.CommandBars.Item["Formatting"].Visible:=false;
OleContainer1.OleObject.CommandBars.Item["Drawing"].Visible:=false;
end;
но у меня есть дополнительная панель Lingvo, которая так просто не удаляется, точнее удалить-то можно но откуда я знаю у кого какая дополнительная панель будет. Нарыл я вот что:
for I:=1 to OleContainer1.OleObject.CommandBars.Count do
OleContainer1.OleObject.CommandBars.Item[i].Visible:=false;
но у меня почему-то этот код вызывает ошибку "Неопознанная ошибка".
← →
LORAN (2005-12-20 15:17) [4]что знал написал
а больше помоч не могу
гдето читал что OleContainer не очень хорош из-зи таких косяков и есть другие компоненты-сам не юзал
← →
leonidus © (2005-12-20 15:24) [5]>LORAN не в обиду, просто хочется разобраться. А если OleContainer не использовать, то как еще можно решить задачу?
← →
LORAN (2005-12-20 15:34) [6]в том то и проблема- не знаю я больше
Извини
если что будет то напишу
← →
Alarm © (2005-12-20 15:41) [7]
function StartAssociatedExe(FileName: string; var ErrorCode: Cardinal): Boolean;
var
Prg: string;
ProcessInfo: TProcessInformation;
StartupInfo: TStartupInfo;
begin
SetLength(Prg, MAX_PATH);
Result := False;
ErrorCode := FindExecutable(PChar(FileName), nil, PChar(Prg));
if ErrorCode >= 32 then
begin
SetLength(Prg, StrLen(PChar(Prg)));
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
wShowWindow := SW_SHOW;
end;
if CreateProcess(PChar(Prg), PChar(Format("%s %s", [Prg, FileName])),
nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, ErrorCode);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
Result := True;
end
else
ErrorCode := GetLastError;
end;
end;
Откроет "доковский" документ FileName
← →
LORAN (2005-12-20 15:48) [8]leonidus держи мож поможет
I должно начинаться с 2 и явно указывать до какого числа идем
мож в OleContainer1.OleObject.CommandBars.Count какаято закавыркаfor I:=2 to 10 do
OleContainer1.OleObject.CommandBars.Item[I].Visible:=0;//0-невидим;1-видим
← →
jack128 © (2005-12-20 15:52) [9]Alarm © (20.12.05 15:41) [7]
ShellExecute уже не в моде? ;)
← →
Alarm © (2005-12-20 16:06) [10]> jack128 © (20.12.05 15:52) [9]
В моде:)
Просто параллельно была задача - дожлаться пока документ не закроется. А с ShellExecute, была "заморока", или я чего-то там не понял:)
← →
Romkin © (2005-12-20 17:02) [11]А может, если требуется просто просмотр, использовать FileViewer?
← →
leonidus © (2005-12-21 08:14) [12]>Alarm дык мне нужно в своей программе открыть вордовский документ.
>Romkin а что это за FileViewer, компонент какой-то?
Мне тут народ подсказал юзать TWebBrowser, оказывается он прекрасно открывает doc-файлы, но к сожалению дает их редактировать, как бы это обойти?
← →
Leonid Troyanovsky © (2005-12-21 09:09) [13]
> leonidus © (20.12.05 13:27)
> Нужно написать простую программу которая умеет только отображать
> doc-файлы с картинками и загружать их диска в зависимости
> от нажатой кнопки.
А зачем писать? Оно уже есть, даже без Word:
http://support.microsoft.com/kb/165908/
--
Regards, LVT.
← →
leonidus © (2005-12-21 09:27) [14]>Leonid Troyanovsky вот что-то подобное мне и нужно написать, только самому
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c