Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2010, 17:21   #1
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию Документ doc в OleContainer

Подскажите, как нужно поместить документ doc в OleContainer.
Я пишу вот так:
Код:
procedure TAddDoc.Button1Click(Sender: TObject);
var doc: string;
begin
  doc := 'blanks/doc01.doc';
  OleContainer1.CreateObjectFromFile(doc, False);
end;
Но получаю неизвестную ошибку при нажатии на кнопку. Подскажите, как правильно.
Mutagena вне форума Ответить с цитированием
Старый 08.01.2010, 21:46   #2
AlexanderKs
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 60
По умолчанию

Необходимо указать полный путь к файлу. Для определения пути к Exe файлу я использовал функцию:

Код:
function GetPath: string;
var s:string; i:integer;
begin
  s:=Application.ExeName;
  for i:=Length(s) downto 1 do begin
    if s[i]='\' then begin
      Delete(s,i+1,Length(s)-i);
      Break;
    end;
  end;
Result:=s;
end;
Возможно, путь к Exe находится проще. Других способов не искал.
При использовании функции код будет следующий:

Код:
procedure TAddDoc.Button1Click(Sender: TObject);
var doc: string;
begin
  doc := GetPath+'blanks/doc01.doc';
  OleContainer1.CreateObjectFromFile(doc, False);
end;
AlexanderKs вне форума Ответить с цитированием
Старый 08.01.2010, 22:20   #3
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

AlexanderKs, спасибо, помогло.
Ещё один вопрос. А как контролировать размер OleContainer в зависимости от размера документа? Например, если документ не помещается, чтобы появлялись полосы прокрутки?
Mutagena вне форума Ответить с цитированием
Старый 08.01.2010, 22:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь Оле контейнер не позволяет посмотреть содержимое так как нужно. Всегда показывается либо только первая страница ( имеется ввиду только часть данных)
Рекомендую найти подходящий компонент сторонний для отображения документа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.01.2010, 22:39   #5
AlexanderKs
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 60
По умолчанию

Нашел строчку кода, возможно это то, что вам нужно:

Код:
procedure TAddDoc.Button1Click(Sender: TObject);
var doc: string;
begin
  doc := GetPath+'blanks/doc01.doc';
  OleContainer1.CreateObjectFromFile(doc, False);
  OleContainer1.DoVerb(ovShow); {активация Ole объекта, появляются полосы прокрутки}
end;
Полосы прокрутки от Ms Word, но иначе, по моему, не сделать.

P.S. Нашел стандартную функцию, возвращающую путь к Exe: GetCurrentDir()

Последний раз редактировалось AlexanderKs; 08.01.2010 в 22:52.
AlexanderKs вне форума Ответить с цитированием
Старый 08.01.2010, 22:46   #6
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

Понятно. Спасибо.
Mutagena вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внедрить .doc в OleContainer Mutagena Помощь студентам 0 08.01.2010 12:23
olecontainer asd178 Компоненты Delphi 2 18.05.2009 17:25
В OleContainer документ Word, как в нем контролировать нажатие клавиши? Djonik Общие вопросы Delphi 0 16.03.2009 18:38