создаю таблицу, назначаю толщину линий и цвет, таблица создается, но все равно остается невидимой
что я делаю не так?
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;
...
Во-первых, wdLineWidth025pt равен не 0, а 2. А во-вторых, цвет назначается не дельфийским clBlack, а Word-овским wdBlack = 1.
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.
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;
гм, границы теперь видны, но только границы таблицы... линии ячеек невидимы можно ли задать цвет линий сразу для всех ячеек? почитал литературу, но там только для конкретных ячеек нашел примеры
Добавлено через 14 мин.
кажется нашел, надо выделить таблицу и указать толщину линии
Application.ActiveDocument.Tables.Item(1).Select;
Application.Selection.Cells.Borders.InsideLineWidth :=wdLineWidth025pt;
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;
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;