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

Делфи Word

27.05.2012, 01:59. Показов 19709. Ответов 27

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, я только начинаю разрабатывать БД, у меня выводится отчет в Word из таблиц DBGrid, но мне необходимо создать еще к нему шапку след. вида, например:

Унифицированная форма № Т-3
Утверждена постановлением Госкомстата
России от 06. 04. 01 № 26

это должно быть справа, еще есть который по центру и слева.
Расскажите как это делать, переносить на след. строку, выравнивать как нужно, шрифт указывать.
Вот какой текст процедуры:
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
procedure TForm5.Button2Click(Sender: TObject);
var
 
table:integer;
 
begin
(сюда нужен заголовок)
 
if CreateWord then begin
 VisibleWord(false);
 AddDoc;
  ADOQuery1.DisableControls;
 WordTableAddFromDBGrid(DBGrid1,true,table);
 VisibleWord(true);
 ADOQuery1.EnableControls;
 
 ADOQuery2.DisableControls;
 WordTableAddFromDBGrid(DBGrid2,true,table);
 VisibleWord(true);
 ADOQuery2.EnableControls;
 
(и сюда)
end;
end;
Помогите, пожалуйста очень срочно нужно!!!!!!!!!!!!!!!!
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2012, 01:59
Ответы с готовыми решениями:

Word в делфи
здравствуйте дорогие программисты, у меня такое дело. Я программно выгружаю данные из базы данных в ворд ,но при открытии документа ворд...

как в делфи объявить, чтобы html файл открывался в Word
procedure TForm1.LISTBOXClick(Sender: TObject); begin case LISTBOX.ItemIndex of 0 : begin ...

Есть ли в Делфи компонент, который представляет из себя лист документа Word?
всем привет! подскажите есть ли в Делфи компонент,который представляет из себя лист документа ворд?

27
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 25
04.06.2012, 20:54  [ТС]
Студворк — интернет-сервис помощи студентам
Всего 5 столбцов, просто я для еще одной таблицы делаю, там вообще их 9. Вот почему-то именно последние не распечатываются в обоих, может потому что это вычисляемые поля??
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
04.06.2012, 21:02
То что есть вычисляемые поля - они должны обычным образом обрабатываться. В общем, это наверное уже надо в коде разбираться и в данных.
А можешь файл данных выложить? Я бы попробовал проверить. Этот файл в общий доступ можно не выкладывать. Его можно залить на файлообменник и ссылку мне в личку кинуть. Если там персональные данные - их надо стереть перед заливкой на файлообменник.
---
Для уточнения - не распечатываются строго только вычисляемые поля?
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 25
04.06.2012, 22:21  [ТС]
Да, только вычисляемые поля

Добавлено через 54 минуты
Здесь впрочем нет ничего секретного, пожалуйста посмотри. Может и с целостностью что подскажешь, как с запросами работать, хочу чтоб данные из одной таблице автоматически появлялись в другой.
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 25
04.06.2012, 22:25  [ТС]
ПИС ПРОГА.rar
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
05.06.2012, 09:31
Я посмотрел. В общем, коллекция Fields не содержит поля, которые определены через редактор полей. Поэтому надо воспользоваться другой коллекцией - FieldList. Она содержит все поля.
С учётом этого, функция экспорта таблицы в 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
50
51
uses
  ComObj;
 
//Функция для экспорта таблицы aDbGrid в документ MS Word в позицию
//диапазона aRng.
//Функция возвращает ссылку на диапазон таблицы MS Word.
function TableToMSWord(aDBGrid : TDBGrid; const aRng : Variant) : Variant;
var
  wdTbl, wdRow : Variant;
  i, Col : Integer;
  DataSet : TDataSet;
  Bm : TBookmarkStr;
begin
  Result := Unassigned;
  if TVarData(aRng).VDispatch = nil then Exit;
 
  DataSet := aDBGrid.DataSource.DataSet;
  DataSet.DisableControls;
  Bm := DataSet.Bookmark; //Установка закладки на текущую позицию в таблице.
  try
    //Создаём новую таблицу MS Word и размещаем её на месте диапазона aRng.
    wdTbl := aRng.Tables.Add(aRng, 1, aDBGrid.Columns.Count);
 
    //Записываем шапку таблицы.
    wdRow := wdTbl.Rows.Item(1);
    Col := 0;
    for i := 0 to DataSet.FieldList.Count - 1 do begin
      if not DataSet.FieldList[i].Visible then Continue; //Пропуск невидимых полей.
      Inc(Col);
      wdRow.Cells.Item(Col).Range.Text := DataSet.FieldList[i].DisplayName;
    end;
 
    //Переносим данные из набора данных в таблицу MS Word.
    DataSet.First; //Переход к первой записи в наборе.
    while not DataSet.Eof do begin
      wdRow := wdTbl.Rows.Add; //Добавление строки внизу таблицы MS Word.
      //Запись данных в ячейки строки таблицы MS Word.
      Col := 0;
      for i := 0 to DataSet.FieldList.Count - 1 do begin
        if not DataSet.FieldList[i].Visible then Continue;
        Inc(Col);
        wdRow.Cells.Item(Col).Range.Text := DataSet.FieldList[i].AsString;
      end;
      DataSet.Next; //Переход к следующей записи в наборе.
    end;
    DataSet.Bookmark := Bm; //Переходим к установленной ранее закладке.
    Result := wdTbl.Range;
  finally
    DataSet.EnableControls;
  end;
end;
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 25
05.06.2012, 11:15  [ТС]
Я конечно наверно замучила с этим отчетом))) Но Подскажите мне, пожалуйста, с запросами если таблицы находятся на разных формах, т. е. есть форма "Сотрудники" и "Оплата", в таблице "Сотрудники" есть поле "Вид оплаты" в которой данные должны быть из таблицы "Оплата". Как в таком случае осуществлять запрос???

Добавлено через 8 минут
Все та же ошибка((((((((((((((((((((

Добавлено через 24 секунды
В отчете(((

Добавлено через 7 минут
Все я поняла в чем ошибка))))))))))) СПАСИБО ОГРОМНОЕ, ЕСЛИ НЕ ТРУДНО ПОМОГИТЕ МНЕ ПЖЛСТА С ЗАПРОСАМИ
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.06.2012, 11:16
Цитата Сообщение от Марийка2012 Посмотреть сообщение
Но Подскажите мне, пожалуйста, с запросами если таблицы находятся на разных формах, т. е. есть форма "Сотрудники" и "Оплата", в таблице "Сотрудники" есть поле "Вид оплаты" в которой данные должны быть из таблицы "Оплата". Как в таком случае осуществлять запрос???
Вот здесь могут будут проблемы из-за того, что запросы расположены на разных формах. Например, при запуске программы может получиться так, что форма с основным запросом уже создана, а форма, на которой лежит запрос предпросмотра, ещё не создана - при этом возникнет ошибка. Такая же ситуация может возникнуть во время работы приложения - если форма с запросом предпросмотра оказалась закрыта с флагом:
CloseAction = caFree.
Чтобы избежать многих подобных проблем, все объекты типа TConnection, TDataBase, TDataSet (TQuery, TTable и др.), TDataSource и пр., следует размещать в специальном модуле, который содержит объявление объекта типа TDataModule. Создаётся такой модуль так: Главное меню - File - New... - Data Module. В файле проекта *.dpr команду создания этого модуля:
Delphi
1
Application.CreateForm(TDataModule1, DataModule1);
следует разместить до создания тех форм, где используются объекты для работы с БД.
Что касается объектов предпросмотра - их удобно создавать специально для этой цели - т. е. только для целей предпросмотра.
1
1 / 1 / 0
Регистрация: 14.05.2015
Сообщений: 26
20.09.2016, 11:15
Добрый день ! Подскажите пожалуйста.

Выгружаю данные в word из combobox и edit. Так же вставляю таблицы в word и заполняю их.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 5,4);
wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
wdTable.Range.ParagraphFormat.Alignment := wdAlignParagraphCenter;
wdTable.Cell(1,1).VerticalAlignment:= 3;
wdTable.Range.Font.Size := 11;
wdTable.Range.Font.name := 'Calibri';
wdTable.Cell(1,1).range.text := 'Тип шкафа' ;
wdTable.Cell(1,2).range.text := 'Конфигурация' ;
wdTable.Cell(1,3).range.text := 'S/N' ;
wdTable.Cell(1,4).range.text := 'Дата установки' ;
wdRng := wdDoc.Range.Characters.Last;
Вопрос в следующем. Строк в таблице будет много и надо сделать заголовки в таблице одним стилем, а наполнить другим стилем.
Пока решение такое, дописывать к каждой ячейке шрифт и размер.
Delphi
1
2
wdTable.Cell(1,1).range.font.name := 'tahoma' ;
wdTable.Cell(1,1).range.font.size:= '9' ;
Можно ли как-то это упростить ? Если да, то как ?
И такая же проблема с шириной таблицы. Приходится прописывать ширину каждой ячейки. Можно ли задать
сразу ширину колонки к примеру или может диапазон ячеек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2016, 11:15
Помогаю со студенческими работами здесь

Как в Делфи выполнить код, написанный на Делфи, например в поле ввода?
Есть способ в Делфи выполнить код, написанный на Делфи, например в поле ввода?

У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!
Где можно скачать Делфи 7, дайте ссылку! У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!

Здр, пожалуйста попробуйте запутсить .exe написанное на делфи 10 у себя, те у кого делфи 7
и скиньте скрин пожалуйста срочно http://www.fayloobmennik.net/4874373 перед тес как запустить, создайте файлы: 1.txt, 2.txt и key.txt...

Как открыть doc в делфи? Или как можно написать огромный текст в делфи?
Думаю поймете. Я решил сделать сборник книг. И в Delphi добавил список книг (в виде кнопок) и при выборе я бы хотел открыть форму где был...

Работа метода Word.Selection.Find при поиске в документе Word
Дорого времени суток! никак не могу разобраться в механизме работы range.find Запускаю: ......................... ...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru