Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ тип границ таблицы

Автор: marwell 10.10.2012 18:22

создаю таблицу, назначаю толщину линий и цвет, таблица создается, но все равно остается невидимой blink.gif
что я делаю не так?

const 
wdLineWidth025pt=0;
var
Application, MyRange: variant;
begin
...
MyRange:=Application.ActiveDocument.Range(Application.ActiveDocument.Range.End-1,
Application.ActiveDocument.Range.End-1);
Application.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=13, NumColumns:=5);
Application.ActiveDocument.Tables.Item(1).Columns.Item(1).Width:=150;
Application.ActiveDocument.Tables.Item(1).Columns.Item(2).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(3).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(4).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(5).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideLineWidth:=wdLineWidth025pt;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideColorIndex:=clBlack;
...

Автор: IUnknown 10.10.2012 19:13

Во-первых, wdLineWidth025pt равен не 0, а 2. А во-вторых, цвет назначается не дельфийским clBlack, а Word-овским wdBlack = 1.

Автор: marwell 10.10.2012 19:19

Цитата(IUnknown @ 10.10.2012 15:13) *

Во-первых, wdLineWidth025pt равен не 0, а 2. А во-вторых, цвет назначается не дельфийским clBlack, а Word-овским wdBlack = 1.

wdLineWidth025pt исправил, а на wdBlack ругается
[Error]: Undeclared identifier: 'wdBlack'

Добавлено через 1 мин.
Цитата(marwell @ 10.10.2012 15:19) *

wdLineWidth025pt исправил, а на wdBlack ругается
[Error]: Undeclared identifier: 'wdBlack'

ой, недосмотрел smile.gif не ругается на wdBlack

Добавлено через 2 мин.
Цитата(marwell @ 10.10.2012 15:19) *

wdLineWidth025pt исправил, а на wdBlack ругается
[Error]: Undeclared identifier: 'wdBlack'

Добавлено через 1 мин.

ой, недосмотрел smile.gif не ругается на wdBlack

стопорится на этой строчке Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideLineWidth:=wdLineWidth025pt;
Прикрепленное изображение

Автор: IUnknown 10.10.2012 19:30

Не верю:


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: marwell 10.10.2012 19:34

Цитата(IUnknown @ 10.10.2012 15:30) *

Не верю:

blink.gif а в чем еще может быть проблема, вызывающая такую ошибку?


procedure TForm1.Button1Click(Sender: TObject);
const wdReplaceAll=2;
wdLineWidth025pt=2;
var
Application, MyRange: variant;
begin
Application:= CreateOleObject('Word.Application');
Application.Documents.Open('E:\12.docx');
Application.ActiveDocument.Range(0, Application.ActiveDocument.Range.End).Copy;
Application.ActiveDocument.Close;
Application.Documents.Add;
Application.ActiveDocument.Range(0,0).Paste;
MyRange:=Application.ActiveDocument.Range(Application.ActiveDocument.Range.End-1,
Application.ActiveDocument.Range.End-1);
Application.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=13, NumColumns:=5);
Application.ActiveDocument.Tables.Item(1).Columns.Item(1).Width:=150;
Application.ActiveDocument.Tables.Item(1).Columns.Item(2).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(3).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(4).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(5).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideLineWidth:=wdLineWidth025pt;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideColorIndex:=1;
Application.ActiveDocument.Save;
Application.ActiveDocument.Close;
Application.Quit;
Application:=UnAssigned;

end;

end.




Добавлено через 4 мин.
Цитата(marwell @ 10.10.2012 15:34) *

blink.gif а в чем еще может быть проблема, вызывающая такую ошибку?
procedure TForm1.Button1Click(Sender: TObject);
const wdReplaceAll=2;
wdLineWidth025pt=2;
var
Application, MyRange: variant;
begin
Application:= CreateOleObject('Word.Application');
Application.Documents.Open('E:\12.docx');
Application.ActiveDocument.Range(0, Application.ActiveDocument.Range.End).Copy;
Application.ActiveDocument.Close;
Application.Documents.Add;
Application.ActiveDocument.Range(0,0).Paste;
MyRange:=Application.ActiveDocument.Range(Application.ActiveDocument.Range.End-1,
Application.ActiveDocument.Range.End-1);
Application.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=13, NumColumns:=5);
Application.ActiveDocument.Tables.Item(1).Columns.Item(1).Width:=150;
Application.ActiveDocument.Tables.Item(1).Columns.Item(2).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(3).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(4).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Item(5).Width:=90;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideLineWidth:=wdLineWidth025pt;
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideColorIndex:=1;
Application.ActiveDocument.Save;
Application.ActiveDocument.Close;
Application.Quit;
Application:=UnAssigned;

end;

end.


аа, блин, забыл
Application.ActiveDocument.Tables.Item(1).Columns.Borders.OutsideLineStyle:=wdLineStyleSingle;


Добавлено через 1 мин.
спасибо большое smile.gif

Автор: marwell 11.10.2012 0:20

гм, границы теперь видны, но только границы таблицы... линии ячеек невидимы sad.gif можно ли задать цвет линий сразу для всех ячеек? почитал литературу, но там только для конкретных ячеек нашел примеры

Добавлено через 14 мин.
кажется нашел, надо выделить таблицу и указать толщину линии

Application.ActiveDocument.Tables.Item(1).Select;
Application.Selection.Cells.Borders.InsideLineWidth :=wdLineWidth025pt;

Но опять вылезает http://forum.pascal.net.ru/index.php?act=Attach&type=post&id=10221
видимо что то не так делаю

Автор: IUnknown 11.10.2012 0:46

const
wdBorderHorizontal = -5;
wdBorderVertical = -6;

var i : Integer;

// ...

for i := wdBorderHorizontal downto wdBorderVertical do
begin
Application.ActiveDocument.Tables.Item(1).Borders.Item(i).LineStyle := wdLineStyleSingle;
Application.ActiveDocument.Tables.Item(1).Borders.Item(i).LineWidth := wdLineWidth025pt;
end;

Автор: marwell 11.10.2012 0:54

Цитата(IUnknown @ 10.10.2012 20:46) *

const
wdBorderHorizontal = -5;
wdBorderVertical = -6;

var i : Integer;

// ...

for i := wdBorderHorizontal downto wdBorderVertical do
begin
Application.ActiveDocument.Tables.Item(1).Borders.Item(i).LineStyle := wdLineStyleSingle;
Application.ActiveDocument.Tables.Item(1).Borders.Item(i).LineWidth := wdLineWidth025pt;
end;


вот оно, помогло) спасибо smile.gif