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

Вниз

Как в моей программе просмативать документы 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.045 c
15-1136992203
Igorek
2006-01-11 18:10
2006.01.29
Украина. Отставка правительства Еханурова.


15-1136440696
begin...end
2006-01-05 08:58
2006.01.29
С днём рождения! 5 января


2-1137345737
Sirko
2006-01-15 20:22
2006.01.29
FastReport


3-1133388279
P.V.
2005-12-01 01:04
2006.01.29
транзакции


5-1123438797
Michael5
2005-08-07 22:19
2006.01.29
Как добавить в свой визуальный компонент другой (тоже визуальный)