Commit 8ca9d163 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Реализована возможность делать таблицы с автомотическим рассчетом ширины колонок.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47714 954022d7-b5bf-4e40-9824-e11837661b57
parent 110794f3
......@@ -7891,6 +7891,14 @@ CDocument.prototype =
return true;
},
Is_InTable : function(bReturnTopTable)
{
if ( true === bReturnTopTable )
return null;
return false;
},
Is_DrawingShape : function()
{
return false;
......
......@@ -340,6 +340,12 @@ CDocumentContent.prototype =
return this.Parent.Is_Cell();
},
// Проверяем, лежит ли данный класс в таблице
Is_InTable : function(bReturnTopTable)
{
return this.Parent.Is_InTable(bReturnTopTable);
},
// Проверяем, является ли данный класс верхним, по отношению к другим классам DocumentContent, Document
Is_TopDocument : function(bReturnTopDocument)
{
......@@ -751,6 +757,21 @@ CDocumentContent.prototype =
return Result;
},
Recalculate_MinContentWidth : function()
{
var Min = 0;
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
var Element = this.Content[Pos];
var CurMin = Element.Recalculate_MinContentWidth();
if ( Min < CurMin )
Min = CurMin;
}
return Min;
},
ReDraw : function(StartPage, EndPage)
{
if ( "undefined" === typeof(StartPage) )
......
......@@ -488,6 +488,14 @@ CHeaderFooter.prototype =
return true;
},
Is_InTable : function(bReturnTopTable)
{
if ( true === bReturnTopTable )
return null;
return false;
},
Is_SelectionUse : function()
{
return this.Content.Is_SelectionUse();
......
......@@ -129,6 +129,7 @@ var historyitem_Table_PositionH = 24; // Изменяем привя
var historyitem_Table_PositionV = 25; // Изменяем привязку по вертикали
var historyitem_Table_Distance = 26; // Изменяем расстояние до окружающего текста
var historyitem_Table_Pr = 27; // Изменяем настройки таблицы целиком
var historyitem_Table_TableLayout = 28; // Изменяем настройки рассчета ширины колонок
// Типы изменений в классе CTableRow
var historyitem_TableRow_Before = 1; // Изменяем свойство Before
......
......@@ -3354,7 +3354,6 @@ Paragraph.prototype =
{
this.Internal_Content_Add( 0, new ParaNumbering() );
}
for ( var Pos = 1; Pos < this.Content.length; Pos++ )
{
var Item = this.Content[Pos];
......@@ -3391,6 +3390,129 @@ Paragraph.prototype =
this.Internal_Recalculate_CurPos( this.CurPos.ContentPos, true, true, false );
},
Recalculate_MinContentWidth : function()
{
// Пересчитаем ширины всех элементов
this.Internal_Recalculate_0();
var bWord = false;
var nWordLen = 0;
var nMinWidth = 0;
var Count = this.Content.length;
for ( var Pos = 0; Pos < Count; Pos++ )
{
var Item = this.Content[Pos];
switch( Item.Type )
{
case para_Text :
{
if ( false === bWord )
{
bWord = true;
nWordLen = Item.Width;
}
else
{
nWordLen += Item.Width;
if ( true === Item.SpaceAfter )
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
bWord = false;
nWordLen = 0;
}
}
break;
}
case para_Space:
{
if ( true === bWord )
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
bWord = false;
nWordLen = 0;
}
break;
}
case para_Drawing:
{
if ( true === bWord )
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
bWord = false;
nWordLen = 0;
}
if ( ( true === Item.Is_Inline() || true === this.Parent.Is_DrawingShape() ) && Item.Width > nMinWidth )
nMinWidth = Item.Width;
break;
}
case para_PageNum:
{
if ( true === bWord )
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
bWord = false;
nWordLen = 0;
}
if ( Item.Width > nMinWidth )
nMinWidth = Item.Width;
break;
}
case para_Tab:
{
nWordLen += Item.Width;
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
bWord = false;
nWordLen = 0;
break;
}
case para_NewLine:
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
break;
}
case para_End:
{
if ( nMinWidth < nWordLen )
nMinWidth = nWordLen;
break;
}
}
}
// добавляем 0.001, чтобы избавиться от погрешностей
return ( nMinWidth > 0 ? nMinWidth + 0.001 : 0 );
},
Draw : function(PageNum, pGraphics)
{
var CurPage = PageNum - this.PageNum;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment