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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2009, 19:19   #11
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
нету и небыло.. и думаю не будет, есть в ворде возможность екселевские таблички вставлять.. как организовать не знаю... но если так надо(сомневаюсь в нужности этого действия), то тут вплотную надо скриптами VB занятся по моему
Ну да! Вон в 6-ом сообщение я написал, что выдает скрипт ворда. Надо узнать каким образом воспринимает Delphi значение wdOMathFunctionScrSup.

Вот http://msdn.microsoft.com/en-us/library/bb243322.aspx тут даже есть номера всех функций, но я всеравно никак это не смог связать с Дельфи. Уже замучался колдовать...

П.С или тут номерки http://www.access-im-unternehmen.de/...merationen.txt
http://www.msckobe.com/links/win32oleconstword.htm

если сделать так:

Код:
W.Selection.OMaths.Add(W.Selection.Range, 19);
То ругается на Add.
Я бы изменил мир, но Бог не дает исходники...

Последний раз редактировалось Polotenchik; 22.08.2009 в 19:22.
Polotenchik вне форума Ответить с цитированием
Старый 23.08.2009, 21:37   #12
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  wdCaptionPositionAbove = $00000000;   //расположить сверху
  wdCaptionPositionBelow = $00000001;  //расположить снизу
var
  W, Table : Variant;
 i, j: Integer;
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.ActiveDocument.Tables.Add(W.ActiveDocument.Range, 4, 5);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';

    for i := 1 to 3 do
    for j := 1 to 5 do
    begin
      Table.Cell(i , j).Range.Text := random(99);
    end;

  Table.Cell(4 , 1).select;
  w.selection.InsertFormula(Formula:='=SUM(ABOVE)', NumberFormat:='0,00'); //вставляем формулу

  W.ActiveDocument.Tables.item(1).select; 
  w.Selection.InsertCaption(Label:='Таблица', Title:='444', 
Position:=wdCaptionPositionAbove, ExcludeLabel:=0); //вставляем название таблицы

  W.Visible := True;
end;
pesi вне форума Ответить с цитированием
Старый 23.08.2009, 23:01   #13
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

pesi, что-то не то. мне формулу надо не в таблицу вставить, а просто. Т.е что-то типа http://itrash.ru/idb/4e959f1caa9bb9c...70b/o23.08.png

П.С Сперва будет идти сама формула потом после равно подставленные значения (должны браться из editов) ну и еще одно равно и результат. Результат уже известен и тоже берется из edit. Т.е все уже известно надо лишь это отобразить в ворде.

А так же никак не могу объединить ячейки в столбце.
Я бы изменил мир, но Бог не дает исходники...

Последний раз редактировалось Polotenchik; 23.08.2009 в 23:07.
Polotenchik вне форума Ответить с цитированием
Старый 24.08.2009, 10:30   #14
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Код:
  Table.Cell(2 , 1).select; //встаем в нужную ячейку
  w.Selection.MoveDown( Count:=1, Extend:=true ); // выделяем одну нижнею  
  w.Selection.MoveRight( Count:=2, Extend:=true ); // выделяем  две справа 
  w.selection.cells.merge; // объединяем
или так
Код:
start_ := w.ActiveDocument.Tables.item(1).Cell(1,1).Range.Start;
end_ := w.ActiveDocument.Tables.item(1).Cell(2,3).Range.End;
w.ActiveDocument.range(start_, end_).select;
w.selection.cells.merge;

Последний раз редактировалось Stilet; 25.08.2009 в 09:32.
pesi вне форума Ответить с цитированием
Старый 24.08.2009, 18:33   #15
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

Pesi, ругается на
Код:
w.selection.cells.merge;
Говорит данная команда не доступна.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 24.08.2009, 21:19   #16
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

я даже и не знаю...
у меня оба варианта работают может от Word зависит (у мня Word 2003 )
Код:
procedure TForm1.Button7Click(Sender: TObject);
var
  W, Table : Variant;
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.Visible := True;
  W.ActiveDocument.Tables.Add(W.ActiveDocument.Range, 4, 5);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  Table.Cell(2 , 1).select; 
  w.Selection.MoveDown( Count:=1, Extend:=true ); 
  w.Selection.MoveRight( Count:=2, Extend:=true ); 
  w.selection.cells.merge; 
end;
pesi вне форума Ответить с цитированием
Старый 24.08.2009, 22:15   #17
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

А у меня 2007-ой. Может там как-то по другому. Сейчас попробую макрос создать посмотрю как там...

О блин! Создал новое приложение с твоим примером, все работает! Значит я что-то напутал. Сейчас буду смотреть. Спасибо огромное! Можешь и с формулой поможешь разобраться ?!

П.С Супер! Все отлично заработало! Я там просто уже перемудрил сперва... Спасибо большое!
Я бы изменил мир, но Бог не дает исходники...

Последний раз редактировалось Polotenchik; 24.08.2009 в 23:23.
Polotenchik вне форума Ответить с цитированием
Старый 25.08.2009, 20:41   #18
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Код:
procedure TForm1.Button9Click(Sender: TObject);
const
wdOMathJcLeft = 3; // лево
wdOMathJcRight = 4; // право
wdOMathJcCenter = 2; // центр
wdOMathJcCenterGroup = 1; //  выравнять группу по центру
var
  W, t : Variant;
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.Visible := True;
  w.selection.text:=
  'Сперва будет идти сама формула потом'+
' после равно подставленные значения'+
' (должны браться из editов) ну и еще'+
' одно равно и результат. Результат уже'+
' известен и тоже берется из edit. Т.е все'+
' уже известно надо лишь это отобразить в ворде.';
  t:=w.ActiveDocument.characters.count;
  w.selection.move(1, t);
  w.selection.typeparagraph;
  w.ActiveDocument.range.insertafter('4^2/2=2');

  w.Selection.MoveRight( Count:=7, Extend:=true);

  w.Selection.OMaths.Add(w.Selection.Range);
  w.Selection.Range.OMaths.BuildUp;
  w.Selection.OMaths.item(1).ParentOMath.Justification:= 3;
end;
pesi вне форума Ответить с цитированием
Старый 25.08.2009, 20:58   #19
Polotenchik
Форумчанин
 
Аватар для Polotenchik
 
Регистрация: 04.12.2008
Сообщений: 260
По умолчанию

pesi, это выше всех похвал! Спасибо большое! Можно немного разъяснить?:

Код:
....
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.Visible := True;
  w.ActiveDocument.range.insertafter('4^2/2=2'); //Просто вставляем текст в линейном виде. Не понял что такое insertafter ?
  w.Selection.MoveRight( Count:=7, Extend:=true); //Выделяем этот текст
  w.Selection.OMaths.Add(w.Selection.Range); //Вставляем его в формулу
  w.Selection.Range.OMaths.BuildUp; //Из линейного вида делаем профессиональный (т.е превращаем в формулу)
Все так? insertafter не ясно что такое.
Я бы изменил мир, но Бог не дает исходники...
Polotenchik вне форума Ответить с цитированием
Старый 25.08.2009, 21:08   #20
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Метод insertafter вставляет текст в конец содержимого range. Есть еще insertbefore только он записывает в начало содержимого range
pesi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как связать Отчет(qreport) в Delphi c Вордом? KingSize БД в Delphi 2 07.12.2008 11:20
Нужна помощь! Нужно переделать программу написанную на дельфи, чтобы она работала под управлением Vista Karloss Фриланс 5 10.11.2008 17:14
Как заставить открыться из под Дельфи CHM файл grenles Общие вопросы Delphi 5 09.10.2008 13:01
Пишу прог на Дельфи под заказ!!! Sanek777 Фриланс 1 31.08.2008 23:22
Помогите с Вордом! Amra Помощь студентам 2 05.06.2007 20:22