Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1137027822
MRAk
2006-01-12 04:03
2006.01.29
Icon из exe


1-1135353216
Zirus
2005-12-23 18:53
2006.01.29
Динамически создаю CheckBox на GroupBox. Как исключить моргание?


15-1136460887
tim@eclear.net
2006-01-05 14:34
2006.01.29
Wanted - Delphi Developers in moscow


2-1136846116
heruvim
2006-01-10 01:35
2006.01.29
Печать в Delphi


6-1129491164
Volf_555
2005-10-16 23:32
2006.01.29
TServerSocket - проблема получения и обработки сообщения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский