Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Таблица Word   Найти похожие ветки 

 
Strori   (2005-02-25 16:16) [0]

Есть данные в форме, которые импортируются в ворд. В виде таблицы. Как сделать видимыми границы ячеек? Сейчас они отображаются в виде линии состоящей из точек. Обозначаются. Ятак понимаю, нужно добавить параметры в строку
Tables:=Doc.Tables.Add(Word.Selection.Range, 12, 2, EmptyParam, EmptyParam);
но какие именно? И...правильно ли я полагаю?


 
Fedia ©   (2005-02-26 07:58) [1]

>И...правильно ли я полагаю?
Судя по всему правильно.
>но какие именно?

var
 WordApp, Sel: variant;
begin
  WordApp:=CreateOleObject("Word.Application");
  WordApp.Visible:=true;
  WordApp.Documents.Add();
  WordApp.DisplayAlerts:=false;

  Sel:=WordApp.Selection;
  Sel.Find.ClearFormatting;

  Sel.Tables.Add(Range:=Sel.Range, NumRows:=12, NumColumns:=
       2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=
       wdAutoFitFixed);
end;

PS. все линии состоят из точек :)


 
Strori   (2005-02-26 12:26) [2]

А есть инфа по параметрам вывода в ворд? Что такое DefaultTableBehavior к примеру. Если это есть в справке дельфи подскажи где искать? :) Как фигуру нарисовать, линию...ну и тп.


 
atruhin ©   (2005-02-26 12:51) [3]

Это не в справке Delphi а в справке VBA, достаточно подробно.
А вообще обычно алгоритм такой: Делаем в Word "Макрос.Начать Запись", производим нужные манипуляции, "Макрос.Закончить запись", далее открываем макрос и смотрим текст, удаляем лишнее.


 
Strori   (2005-02-26 14:43) [4]

Бэйсик значит...хорошо покопаю там.

Вопрос по привденному коду: как там вставить значение в ячейку таблицы? В моём варианте все было просто:
Tables.Rows.Item(8).Cells.Item(2).Range.Text:=Edit8.Text;
А в коде Fedia как?


 
YurikGL ©   (2005-02-26 14:46) [5]

http://www.delphimaster.ru/articles/dbtoword/index.html

Procedure TForm1.TableLineSet;
Begin
 w1.Selection.Cells.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
 w1.Selection.Cells.Borders.Item(wdBorderRight).LineStyle:= wdLineStyleSingle;
 w1.Selection.Cells.Borders.Item(wdBorderHorizontal).LineStyle:= wdLineStyleSingle;
 w1.Selection.Cells.Borders.Item(wdBorderTop).LineStyle:= wdLineStyleSingle;
 w1.Selection.Cells.Borders.Item(wdBorderBottom).LineStyle:= wdLineStyleSingle;
 w1.Selection.Cells.Borders.Item(wdBorderVertical).LineStyle:= wdLineStyleSingle;

End;

А вообще http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208 читать интересное о себе


 
Fedia ©   (2005-02-26 14:58) [6]

>Strori   (26.02.05 14:43) [4]
Я не пробовал, но разве вариант

Tables:=Doc.Tables.Add(Word.Selection.Range, 12, 2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=
      wdAutoFitFixed);

не работает?


 
Strori   (2005-02-26 15:32) [7]

Fedia, не работает.Пишет ошибку синтаксиса DefaultTableBehavior:=wdWord9TableBehavior перед двоеточием...


 
Fedia ©   (2005-02-26 23:18) [8]

А если так (иногда приходится экспериментировать):

Tables:=Doc.Tables.Add(Word.Selection.Range, 12, 2, wdWord9TableBehavior, wdAutoFitFixed);


 
Strori   (2005-02-27 02:32) [9]

тоже пробовал.Пишет Types of actual and format var parameters must be identical


 
Fedia ©   (2005-02-27 05:37) [10]

>Strori   (27.02.05 02:32) [9]
В твоем примере не понятно, чему у тебя равна переменная Doc.
В случае, если переменная Word из [1] ассоциирована у тебя с самим документом, т.е. Word:=CreateOleObject("Word.Application"),
то должен работать вариант:
Tables:=Word.Selection.Tables.Add(Word.Selection.Range, 12, 2, wdWord9TableBehavior, wdAutoFitFixed);
В противном случае вот рабочий пример:

var
Word, tables: variant;
begin
 Word:=CreateOleObject("Word.Application");
 Word.Visible:=true;
 Word.Documents.Add();
 Word.DisplayAlerts:=false;

 Tables:=Word.Selection.Tables.Add(Word.Selection.Range, 12, 2,
   wdWord9TableBehavior, wdAutoFitFixed);
 Tables.Rows.Item(8).Cells.Item(2).Range.Text:="1";
end;


Как еще один, но более удобный и быстрый вариант работы с таблицами можешь попробовать следующий:

var
Word, Sel: variant;
tmp: string;
i, n: integer;
begin
 Word:=CreateOleObject("Word.Application");
 Word.Visible:=true;
 Word.Documents.Add();
 Word.DisplayAlerts:=false;

 Sel:=Word.Selection;
 Sel.Find.ClearFormatting;

 for i:=1 to 10 do
 begin
   for n:=1 to 10 do
   tmp:=tmp + IntToStr(i*n) + #9;
   tmp[Length(tmp)]:=#10;
 end;
 Sel.TypeText(Text:=tmp);
 Sel.MoveUp(Unit:=wdLine, Count:=10, Extend:=wdExtend);

 Sel.ConvertToTable(Separator:=wdSeparateByTabs, NumColumns:=10,
   NumRows:=10, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=
   wdAutoFitFixed);
 Sel.MoveDown(Unit:=wdLine, Count:=1);
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.044 c
14-1108784018
Doxygen
2005-02-19 06:33
2005.03.13
Знатокам HTML


4-1106989591
Дима
2005-01-29 12:06
2005.03.13
Глупый вопрос!


1-1109370824
Германн
2005-02-26 01:33
2005.03.13
EInOutError - Прав ли я, что оно "малополезно"?


11-1091076686
ORMADA
2004-07-29 08:51
2005.03.13
DBGrid


14-1109096969
Breakmaster
2005-02-22 21:29
2005.03.13
Хостинг для форума





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский