Главная страница
    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.059 c
1-1109348473
babayka
2005-02-25 19:21
2005.03.13
Приоритет окна диалога


3-1108030742
BPK
2005-02-10 13:19
2005.03.13
TDataSet.Locate не работает по сортированному DataSet


1-1109267295
Fenik
2005-02-24 20:48
2005.03.13
Память, занимаемая массивом, содержащим дин. массивы.


10-1085909867
newbiest
2004-05-30 13:37
2005.03.13
poa in delphi


3-1108111229
integery
2005-02-11 11:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский