Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/79: Рейтинг темы: голосов - 79, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 32

Просмотр Word документа на форме.

02.12.2011, 00:42. Показов 16937. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Привет и заранее спасибо за помощь которая вполне реально очень поможет мне. Начну с предыстории которая может обратит Ваше внимание более остро на мой вопрос . Я по образованию и профессии системный администратор дипломированный специалист Циско, а программирование это побочные знания. Так получилось в жизни что я попал в зону и отбываю теперь здесь наказание за преступление и что б не сойти с ума в таких местах работаю на администрацию связистом. Ремонтирую телефоны и т.д. Недавно установили информационный терминал оказалось что обслуживать в зоне его некому потом выяснилось что у них сидит специалист в ИТ технологиях т.е. я. На этом терминале стоит программа не сложная я её доработал. Потом мне предложили переделать её полностью т.к. моя доработка понравилась в управлении УФСИН по нашей области, а главное не надо платить  пообещав мне условно досрочное освобождение. Наработки дошли до большого уровня но знания закончились интернета естественно в зоне не кто не даст пришлось нелегально затянуть 3дж модем  и вот я впервые за последний год в интернете… Под большим секретом и покровом ночи обращаюсь к вам друзья и коллеги помогите……
А вопрос собственно вот в чем. Нужен листинг или ссылка на описание такого рода программы, да к стати пишу на Delphi 7, На новой форме создаем кнопку при её нажатии открывается новая форма в которой просто отображен документ word просто для просмотра
Вот такая проблема, по понятным причинам не могу себя назвать и скинуть ссылку на фотки но в аське меня не найти так что пишите 124154130 если есть желание помочь ежедневно после 23.00 я в сети.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2011, 00:42
Ответы с готовыми решениями:

Просмотр Word документов
Как просматривать word файлы(документы) на форме(к примеру в поле Memo)???

Просмотр Word документов, не используя TRichEdit
как промотреть word-документ(.doc) не используя TRichEdit т.е. без конвертации его в RTF формат

Просмотр документов MS Word в программе на Delphi
Как сделать просмотр в delphi word документов??? скиньте исходники...

10
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.12.2011, 09:19
Чтобы документ Word отобразить на форме - это нужен специальный ActiveX элемент, который умеет это делать. Такой элемент можно импортировать в среду Delphi.
Вот если бы у нас был документ в формате RTF - его можно на форме показать и редактировать, если требуется, с помощью компонента TRichEdit.
Можно управлять приложением MS Word из внешней программы (например, написанной на Delphi) с помощью технологии OLE (COM). OLE - Object Linking and Emebedding - связывание и внедрение объектов.
Вот, например, как можно работать с документом MS Word через управление приложением MS Word по OLE технологии. - Открываем файл в MS Word, показываем документ и добавляем в его конец текст из Мемо:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  wdApp, wdDocs, wdDoc : Variant;
  S : String;
  Od : TOpenDialog;
begin
  Od := OpenDialog1;
 
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath( Application.ExeName )
  ;
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then begin
    MessageDlg(
      'Файл с заданным именем не найден. Действие отменено.'
      ,mtWarning, [mbOK], 0
    );
    Exit;
  end;
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
 
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  //Попытка открыть выбранный файл.
  wdDoc := wdDocs.Open(FileName:=Od.FileName);
  (*
  //На случай, если надо создать новый документ.
  //Если параметр Template:='...' не задан,
  //то новый документ создаётся по шаблону Normal.Dot.
  //wdDoc := wdDocs.Add;
  *)
  //Добавляем пустую строку в конец документа.
  wdDoc.Range.InsertAfter(#10);
  //Добавляем текст в конец документа.
  S := Memo1.Text;
  wdDoc.Range.InsertAfter(S);
  //Закрываем MS Word.
  //wdApp.Quit;
end;
В общем, на много удобнее, если можно было бы решать через OLE. В этом случае, для работы программы достаточно, чтобы на компьютере был установлен MS Word.
Если применять специальные ActiveX, то при переносе программы на другой компьютер придётся позаботиться о том, чтобы файл с AciveX компонентом (*.OCX или *.DLL) был перенесён вместе с программой и такой файл должен быть зарегистрирован в системе (с помощью вызова: regsvr32.exe MyActiveX.ocx. (Отменить регистрацию: regsvr32.exe /u MyActiveX.ocx).
1
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 32
02.12.2011, 17:58  [ТС]
Спасибо за помощь. Убрав лишнее получил почти то что нужно. Только вот смотри при нажатии кнопки открывается диалог с предложением выбрать открываемый файл, а надо что б он сразу открывался в opendialog я задал имя нужного файла но не чего не изменилось .
Посмотри на картинках чего я хочу добится
При запуске программы открывается вот такая форма при нажатии на кнопку открывается следующая форма отображающая текс для просмотра вот чего мне нужно добиться.
Это как образец они мне дали, такие проги стоят на информационных терминалах в других областях. И ещё одно то, что отображается в виде текста на второй форме берётся из html файла, т.е. вот скрины дерева каталогов. Они каждый раз если нужно внести изменения в файл пишут в ворде потом переделывают в html и меняют нужные файлы местами. Вот прикинь как всё это тупо менты одним словом. Помоги разобраться. Програмер я очень слабенький. Как здесь говорят век бля буду не забуду.
Миниатюры
Просмотр Word документа на форме.   Просмотр Word документа на форме.   Просмотр Word документа на форме.  

Просмотр Word документа на форме.   Просмотр Word документа на форме.  
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.12.2011, 18:17
Если имя файла известно и его не надо выбирать через диалог, то можно делать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'file.doc';
var
  wdApp, wdDocs, wdDoc : Variant;
  S, FileName : String;
begin
  //Полное имя файла документа - предполагается, что он лежит в той же папке,
  //что и исполняемый файл программы. Возможно, файл должен лежать в какой-то
  //вложенной папке, тогда можно Fn задать, например, так: Fn = 'Data\file.doc';
  FileName := ExtractFilePath( Application.ExeName ) + Fn;
  //Проверка на существование файла.
  if not FileExists(FileName) then begin
    MessageDlg(
      'Файл с заданным именем не найден. Действие отменено.'
      ,mtWarning, [mbOK], 0
    );
    Exit;
  end;
  //Попытка запустить MS Word и открыть в нём файл.
  try
    wdApp := CreateOleObject('Word.Application');
  except
    ShowMessage('Не удалось запустить MS Word. Действие отменено.');
    Exit;
  end;
...
end;
Цитата Сообщение от turbomatic Посмотреть сообщение
Они каждый раз если нужно внести изменения в файл пишут в ворде потом переделывают в html и меняют нужные файлы местами.
Да - здесь авторы выкрутились из ситуации. Таким образом, содержимое документа показывается на форме - якобы, просматривается документ DOC.
Что касается перевода из DOC в HTML и обратно - это, как я понял, следует делать через методы самого MS Word. Там через OLE можно вызывать метод SaveAs() и сохранить файл DOC в формате HTML. А можно и наоборот - открыть HTML и сохранить потом его в формате DOC.
Я сегодня позже посмотрю как это делать. - Там надо вызывать SaveAs() и через параметры этого метода указывать, в каком формате надо сохранять.
1
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 32
04.12.2011, 07:18  [ТС]
Привет, спасибо за помощь, решил не парится и сделал иак же как и у авторов той программы отображаю хтмл файл так проще только теперь другая проблема в таком виде

на форме 1 кнопки

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons;
 
type
  TForm1 = class(TForm)
    btn1: TSpeedButton;
    btn2: TSpeedButton;
    btn3: TSpeedButton;
    btn4: TSpeedButton;
    btn5: TSpeedButton;
    btn6: TSpeedButton;
    procedure btn1Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
    procedure btn6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
  uses Unit2, Unit3, Unit4, Unit5, Unit6;
{$R *.dfm}
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  f[COLOR="Red"]form2.load('C:\Documents and Settings\User\Desktop\project2\Text_Data\stend.htm');[/COLOR]
end;
 
procedure TForm1.btn4Click(Sender: TObject);
begin
  form2.load('C:\Documents and Settings\User\Desktop\project2\Text_Data\pomilov.htm');
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
 form3 := Tform3.create(self);
 form3.showmodal;
 form3.free;
end;
 
procedure TForm1.btn3Click(Sender: TObject);
begin
 form4 := Tform4.create(self);
 form4.showmodal;
 form4.free;
end;
 
procedure TForm1.btn5Click(Sender: TObject);
begin
 form5 := Tform5.create(self);
 form5.showmodal;
 form5.free;
end;
 
procedure TForm1.btn6Click(Sender: TObject);
begin
 form6 := Tform6.create(self);
 form6.showmodal;
 form6.free;
end;
 
end.
 
 
вот  форма два открывается при нажатии кнопки проблема в том что путь к файлам статический а мне нужно что бы перемужать папку с программой можно было хотябы в пределах диска 
 
 
 
 
unit Unit2;
 
interface
 
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, Buttons, ExtCtrls;
 
type
  TForm2 = class(TForm)
    img1: TImage;
    img2: TImage;
    btn1: TSpeedButton;
    wb1: TWebBrowser;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
     procedure Load(ADocName: String);
  end;
 
var
  Form2: TForm2;
 
implementation
 
{$R *.dfm}
 
 { TForm2 }
 
procedure TForm2.Load(ADocName: String);
begin
  WB1.Navigate(ADocName);
  ShowModal;
end;
 
procedure TForm2.btn1Click(Sender: TObject);
begin
Close;
end;
 
end.
0
19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
05.12.2011, 05:20
Цитата Сообщение от turbomatic Посмотреть сообщение
вот форма два открывается при нажатии кнопки проблема в том что путь к файлам статический а мне нужно что бы перемужать папку с программой можно было хотябы в пределах диска
Delphi
1
2
3
4
5
var
path:string; 
begin
path:=extractfilepath(paramstr(0)); //получение пути, там где лежит сама программа
end;
0
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 13
06.02.2019, 11:56
Спасибо за ответы, очень помогли. А такое прокатит, если это будет делаться в Delphi только под мобилку?
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
06.02.2019, 12:37
Цитата Сообщение от NeytrinoKain Посмотреть сообщение
под мобилку
Какая ОС, версия?
0
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 13
06.02.2019, 13:10
Прости, Андройд
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
06.02.2019, 13:12
Какой?

Добавлено через 1 минуту
В embarcadero delphi 10.X есть средства для разработки под андроид. Как работает - не знаю, ибо писал под него на Java..
0
0 / 0 / 0
Регистрация: 22.08.2018
Сообщений: 13
06.02.2019, 13:15
Android 8
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2019, 13:15
Помогаю со студенческими работами здесь

Просмотр документов Word без конвертации их в Rtf
нужен компонент типа TRichEdit для просмотра документов Word (doc) без конвертации их в формат RTF

Открытие Word документа
Сразу к делу, вот сделал открытие Word документа в программе, все работает. А если я открываю документ на другом ПК, то пишет файл не...

Создание документа Word
Как через Delphi создать новый документ Word. Нажимая на кнопку создается и открывается новый документ.

Создание word документа
Доброе время суток друзья. Как реализовать вывод в word всей введенной и выбранной информации? как пример: "дата-66.2066,...

Создание Word документа
Всем привет, кто знает как правильно создавать Word-овский документ, я написал код, он открывает Word и там я могу работать с документом,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru