Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.01.2008, 16:18
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Помогите, срочно нужно !

Вот код:
Код:
var
  c, n: integer;
  WordApp, NewDoc, WordTable: olevariant;
  iCols, iRows, iGridCols, jGridRows: integer;
begin
    c := 10;
    n := 2;
    try
      // Create a Word Instance
      WordApp := CreateOleObject('Word.Application');
    except
      ShowMessage('Error!');
      Exit;
    end;
    WordApp.Visible := True;
    NewDoc := WordApp.Documents.Add;
    iRows := n;
    iCols := c;
    // Add a Table
    WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);
    WordTable.Range.Font.Size:=12;
    s:=10000;
    for jGridRows := 1 to iRows do
    for iGridCols := 1 to iCols do
    begin
    s:=s+1;
    str:=IntToStr(s)[1]+'.'+Copy(IntToStr(s),2,Length(IntToStr(s)));
    WordTable.Cell(jGridRows, iGridCols).Range.Text := str;
      end;
    WordApp   := Unassigned;
    NewDoc    := Unassigned;
    WordTable := Unassigned;
end;
Помогите пожалуйста как сделать таблицу, чтобы её значения получались ровно в квадратах, желательно 3x3 см
И находились точно в центре каждой строки да и ещё жирным.
Очень нужно и срочно !!!

Последний раз редактировалось Oleg, 15.01.2008 в 16:21.
Ответить с цитированием
  #2  
Старый 15.01.2008, 17:05
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Люди, помогите !

Люди, помогите очень нужно прямо сейчас !
Ответить с цитированием
  #3  
Старый 15.01.2008, 17:08
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Лампочка

Я скажу, как это сделать в самом Word, а ты смотри по документации к нему (у меня нету, но обычно - файлы VBA*.hlp) как это кодить...
Нужно для всей таблицы установить следующие свойства ( в Word - Свойства таблицы...)
Вкладка строка:
Установить флажок "Высота", выбрать нужную величину и режим - "Точно"
Вкладка столбец:
Установить флажок "Ширина", выбрать нужную величину и еденицы - "Сантиметры"
Вкладка ячейка:
Установить флажок "Ширина", выбрать нужную величину и еденицы - "Сантиметры", вертикальное выравнивание поставить "по центру"

Потом уже в настройках шрифта - жирный и выравнивание текста "по центру".
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #4  
Старый 15.01.2008, 17:12
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
По умолчанию

Потом уже в настройках шрифта - жирный и выравнивание текста "по центру".
-А как сделать чтобы по центру в квадрате(а не по центру в квадрате), т.е. в центре и по ширине и по длине ?
Ответить с цитированием
  #5  
Старый 15.01.2008, 17:28
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание ОЧЕНЬ СРОЧНО !!!

Всё сделал, но когда распечатывает, то не видно таблицы, срочно помогите !!!!!!!!
Ответить с цитированием
  #6  
Старый 15.01.2008, 17:39
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Радость Слава Богу !!!

Всё работает(частично руками)
Ответить с цитированием
  #7  
Старый 15.01.2008, 18:49
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Радость

Вот полностью - пришлось лезть в VBA Word и там в Object Browse искать нужные методы и свойства, а значения констант искать в поиске кода Google.
Вложения
Тип файла: 7z Send Tables.7z (6.6 Кбайт, 2 просмотров)
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #8  
Старый 15.01.2008, 19:37
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Хорошо Спасибо !

Конечно спасибо, что откликнулись, но пример немного не такой, какой мне нужен. Да я уже до этого написал, что всё получилось. Но руками:
приходится выделять таблицу и в настройках таблицы -> границы и заливки в разделе "Всё" выбрирать руками. Можно как-нибудь програмно ? Для чего я это делаю => т.к. при распечатывании таблицы с тем, что внутри, символы видно, а таблицы нет. Можно как-нибудь это исправлять программно ?
Ещё раз спасибо, что помогли и потратили свое время.
Кстати по центру (сверху - вниз, слева-направо) я выравниваю, добавляя код #13+text+#13, т.е. Enter и всё Хорошо !!! Вот только делаю, чтобы было видно таблицу... Можно как-нибудь это исправлять программно ?
Ответить с цитированием
  #9  
Старый 15.01.2008, 20:38
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание

Чтобы таблица была видна,
добавь в конце:
Код:
    WordTable.Borders.Item(wdBorderTop).Visible:=True;
    WordTable.Borders.Item(wdBorderLeft).Visible:=True;
    WordTable.Borders.Item(wdBorderBottom).Visible:=True;
    WordTable.Borders.Item(wdBorderRight).Visible:=True;
    WordTable.Borders.Item(wdBorderHorizontal).Visible:=True;
    WordTable.Borders.Item(wdBorderVertical).Visible:=True;

    WordApp   := Unassigned;
    NewDoc    := Unassigned;
    WordTable := Unassigned;

Значения констант:
Код:
const
  { WdBorderType }
  wdBorderTop = $FFFFFFFF;
  wdBorderLeft = $FFFFFFFE;
  wdBorderBottom = $FFFFFFFD;
  wdBorderRight = $FFFFFFFC;
  wdBorderHorizontal = $FFFFFFFB;
  wdBorderVertical = $FFFFFFFA;
  wdBorderDiagonalDown = $FFFFFFF9;
  wdBorderDiagonalUp = $FFFFFFF8;

PS: открываешь Word, нажимаешь Alt+F11, запускаешь там Object Browse ( F2 ) и ищешь нужные свойства

PPS: Кстати, самому было интересно - раньше никогда с Word'ом не работал
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #10  
Старый 15.01.2008, 20:51
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Хорошо Спасибо !

Спасибо за код !!!!
Всё работает !
Ответить с цитированием
  #11  
Старый 15.01.2008, 20:56
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Радость

С радостью помогу ещё, т.к вопросы у тебя интересные и не сводятся к фразе типа "я делфи не знаю - решите за меня задачу..."
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #12  
Старый 15.01.2008, 21:00
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Вопрос Вопрос

А как можно сменить кодировку ?
NewDoc.TextEncoding:='msoEncodingUtf8' на Utf8 ?????
не работает.....
Ответить с цитированием
  #13  
Старый 15.01.2008, 21:06
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Хорошо

Цитата:
Сообщение от Rokuell
С радостью помогу ещё, т.к вопросы у тебя интересные и не сводятся к фразе типа "я делфи не знаю - решите за меня задачу..."
Рад, что не ругаетесь....
Вот по предидущему вопросу не поможете(с кодировкой).
Ответить с цитированием
  #14  
Старый 15.01.2008, 22:05
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение

Нашёл два варианта:
1. Кодировку можно выбрать при открытии:
Описание в VBA:
Код:
Function Open(FileName, [ConfirmConversions], [ReadOnly], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert], [WritePasswordDocument], [WritePasswordTemplate], [Format], [Encoding], [Visible], [OpenAndRepair], [DocumentDirection], [NoEncodingDialog], [XMLTransform]) As Document

Код:
Код:
const
 msoEncodingUTF8 = 65001;
 msoEncodingCyrillic = 1251;

NewDoc := WordApp.Documents.Open('mydoc.doc', EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, msoEncodingUTF8, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

2. А можно перегрузить документ в новой кодировке:
Код:
NewDoc.ReloadAs(msoEncodingUTF8);
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:30.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025