Главная страница
    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.035 c
1-1109316148
АМБ
2005-02-25 10:22
2005.03.13
Пересветка компонент на форме


4-1106132766
MLM
2005-01-19 14:06
2005.03.13
Уровень загрузки системы процессом


14-1108463737
WWTLF
2005-02-15 13:35
2005.03.13
Лаги на этом сайте!


1-1109626493
dmk
2005-03-01 00:34
2005.03.13
Как определить длину текста в Clipboard?


4-1106412342
novice__man
2005-01-22 19:45
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский