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 = ...@@ -7891,6 +7891,14 @@ CDocument.prototype =
return true; return true;
}, },
Is_InTable : function(bReturnTopTable)
{
if ( true === bReturnTopTable )
return null;
return false;
},
Is_DrawingShape : function() Is_DrawingShape : function()
{ {
return false; return false;
......
...@@ -340,6 +340,12 @@ CDocumentContent.prototype = ...@@ -340,6 +340,12 @@ CDocumentContent.prototype =
return this.Parent.Is_Cell(); return this.Parent.Is_Cell();
}, },
// Проверяем, лежит ли данный класс в таблице
Is_InTable : function(bReturnTopTable)
{
return this.Parent.Is_InTable(bReturnTopTable);
},
// Проверяем, является ли данный класс верхним, по отношению к другим классам DocumentContent, Document // Проверяем, является ли данный класс верхним, по отношению к другим классам DocumentContent, Document
Is_TopDocument : function(bReturnTopDocument) Is_TopDocument : function(bReturnTopDocument)
{ {
...@@ -751,6 +757,21 @@ CDocumentContent.prototype = ...@@ -751,6 +757,21 @@ CDocumentContent.prototype =
return Result; 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) ReDraw : function(StartPage, EndPage)
{ {
if ( "undefined" === typeof(StartPage) ) if ( "undefined" === typeof(StartPage) )
......
...@@ -488,6 +488,14 @@ CHeaderFooter.prototype = ...@@ -488,6 +488,14 @@ CHeaderFooter.prototype =
return true; return true;
}, },
Is_InTable : function(bReturnTopTable)
{
if ( true === bReturnTopTable )
return null;
return false;
},
Is_SelectionUse : function() Is_SelectionUse : function()
{ {
return this.Content.Is_SelectionUse(); return this.Content.Is_SelectionUse();
......
...@@ -129,6 +129,7 @@ var historyitem_Table_PositionH = 24; // Изменяем привя ...@@ -129,6 +129,7 @@ var historyitem_Table_PositionH = 24; // Изменяем привя
var historyitem_Table_PositionV = 25; // Изменяем привязку по вертикали var historyitem_Table_PositionV = 25; // Изменяем привязку по вертикали
var historyitem_Table_Distance = 26; // Изменяем расстояние до окружающего текста var historyitem_Table_Distance = 26; // Изменяем расстояние до окружающего текста
var historyitem_Table_Pr = 27; // Изменяем настройки таблицы целиком var historyitem_Table_Pr = 27; // Изменяем настройки таблицы целиком
var historyitem_Table_TableLayout = 28; // Изменяем настройки рассчета ширины колонок
// Типы изменений в классе CTableRow // Типы изменений в классе CTableRow
var historyitem_TableRow_Before = 1; // Изменяем свойство Before var historyitem_TableRow_Before = 1; // Изменяем свойство Before
......
...@@ -3354,7 +3354,6 @@ Paragraph.prototype = ...@@ -3354,7 +3354,6 @@ Paragraph.prototype =
{ {
this.Internal_Content_Add( 0, new ParaNumbering() ); this.Internal_Content_Add( 0, new ParaNumbering() );
} }
for ( var Pos = 1; Pos < this.Content.length; Pos++ ) for ( var Pos = 1; Pos < this.Content.length; Pos++ )
{ {
var Item = this.Content[Pos]; var Item = this.Content[Pos];
...@@ -3391,6 +3390,129 @@ Paragraph.prototype = ...@@ -3391,6 +3390,129 @@ Paragraph.prototype =
this.Internal_Recalculate_CurPos( this.CurPos.ContentPos, true, true, false ); 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) Draw : function(PageNum, pGraphics)
{ {
var CurPage = PageNum - this.PageNum; 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