diff --git a/widgets/DapComboBox.qml b/widgets/DapComboBox.qml
index 6d1111970cda1a8c6db99bff5e3d80137769ad7a..3e6a0d8354d050eed76402631b1810d9a3171d84 100644
--- a/widgets/DapComboBox.qml
+++ b/widgets/DapComboBox.qml
@@ -3,7 +3,6 @@ import QtQuick.Controls 2.0
 
 DapComboBoxForm
 {
-
     delegate:
         ItemDelegate
         {
@@ -32,112 +31,82 @@ DapComboBoxForm
             contentItem:
                 Rectangle
                 {
-                    id: rectTextComboBox
-
+                    id: rectangleTextComboBox
                     anchors.fill: parent
                     anchors.topMargin: paddingTopItemDelegate
                     anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
                     anchors.rightMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
                     color: "transparent"
-                    width: (index !== currentIndex) ?
-                               widthPopupComboBoxNormal - 2*sidePaddingActive - endRowPadding :
-                               widthPopupComboBoxNormal - indicatorWidth - indicatorLeftInterval - 2 * sidePaddingActive
+
+                    property int comboBoxIndex: index
+                    property int comboBoxCurrentIndex: currentIndex
 
                     FontMetrics
                     {
                         id: comboBoxFontMetric
-                        font: fontComboBox
                     }
-                    property int comboBoxIndex: index
-                    property int comboBoxCurrentIndex: currentIndex
+
                     Row
                     {
+                        id: textRow
+                        width: rectangleTextComboBox.width - ((index != currentIndex) ?
+                                                                  endRowPadding :
+                                                                  (indicatorWidth + indicatorLeftInterval)
+                                                              )
+                        height: rectangleTextComboBox.height
                         spacing: roleInterval
+
                         Repeater
                         {
+                            id: textRepeater
                             model: comboBoxTextRole.length
-                            Text
+
+                            DapText
                             {
-                                id: textDelegateComboBox
-                                font: fontComboBox
-                                color: hovered ? hilightColorText : normalColorText
-                                horizontalAlignment:
+                                id: textComboBoxDelegate
+                                width: (textRow.width - roleInterval * (comboBoxTextRole.length - 1)) / comboBoxTextRole.length
+                                enabled: false
+                                fontDapText: (fontComboBox.length > index) ?
+                                                 fontComboBox[index] :
+                                                 fontComboBox[0];
+                                textColor: hovered ? colorTextComboBox[index][1] : colorTextComboBox[index][0]
+                                fullText: getModelData(rectangleTextComboBox.comboBoxIndex, comboBoxTextRole[index])
+                                textElide: (elideTextComboBox.length > index) ?
+                                               elideTextComboBox[index] :
+                                               elideTextComboBox[0];
+                                horizontalAlignment: (alignTextComboBox.length > index) ?
+                                               alignTextComboBox[index] :
+                                               alignTextComboBox[0];
+
+
+                                Component.onCompleted:
                                 {
-                                    if(index === 0)
-                                        return Text.AlignLeft;
-                                    if(index === comboBoxTextRole.length - 1)
-                                        return Text.AlignRight;
-                                    return Text.AlignHCenter;
-                                }
-                                width: (rectTextComboBox.width - roleInterval * (comboBoxTextRole.length - 1)) / comboBoxTextRole.length
-                                /*{
-                                        if(index === 0)
-                                            setModelDataWidth(rectTextComboBox.comboBoxIndex, comboBoxFontMetric, rectTextComboBox.width);
-                                         console.log("comboBoxIndex", rectTextComboBox.comboBoxIndex, "index", index, "comboBoxTextRole", comboBoxTextRole[index])
-                                         return comboBoxTextRoleWidth[index];
-                                }*/
-                                TextMetrics
-                                {
-                                    id: comboBoxTextMetric
-                                    font: fontComboBox
-                                    elide: Text.ElideRight
-                                    text: getModelData(rectTextComboBox.comboBoxIndex, comboBoxTextRole[index])
-                                    elideWidth: textDelegateComboBox.width
-                                }
-                                /*Component.onCompleted:
-                                {
-                                    setModelDataWidth(rectTextComboBox.comboBoxIndex, comboBoxFontMetric, rectTextComboBox.width);
-                                    textDelegateComboBox.width = comboBoxTextRoleWidth[index];
-                                }*/
-                                text:
-                                {
-                                    if(rectTextComboBox.comboBoxIndex != rectTextComboBox.comboBoxCurrentIndex)
-                                    {
-                                        if(comboBoxTextMetric.elideWidth < comboBoxFontMetric.tightBoundingRect(comboBoxTextMetric.text).width)
-                                            return checkElidedText(comboBoxFontMetric, comboBoxTextMetric);
-                                        else if(comboBoxTextMetric.elideWidth === comboBoxFontMetric.tightBoundingRect(comboBoxTextMetric.text).width)
-                                            return comboBoxTextMetric.text;
-                                        else
-                                            return comboBoxTextMetric.elidedText.replace('…', '..');
-                                    }
-                                    else
-                                    {
-                                        if(popup.visible)
-                                        {
-                                            if(comboBoxTextMetric.elideWidth < comboBoxFontMetric.tightBoundingRect(comboBoxTextMetric.text).width)
-                                                mainLineText[index] = checkElidedText(comboBoxFontMetric, comboBoxTextMetric);
-                                            else
-                                            {
-                                                if(comboBoxTextMetric.elideWidth === comboBoxFontMetric.tightBoundingRect(comboBoxTextMetric.text).width)
-                                                    mainLineText[index] = comboBoxTextMetric.text;
-                                                else
-                                                    mainLineText[index] = comboBoxTextMetric.elidedText.replace('…', '..');
-                                            }
-
-                                        }
-                                        else
-                                        {
-                                            if(index === 0)
-                                                mainLineText[index] = comboBoxFontMetric.elidedText(getModelData(rectTextComboBox.comboBoxIndex, comboBoxTextRole[index]),
-                                                                                                                        Text.ElideRight,
-                                                                                                                        (widthPopupComboBoxNormal - indicatorWidth - indicatorLeftInterval),
-                                                                                                                         Qt.TextShowMnemonic).replace('…', '..');
-                                        }
-                                        console.log("mainLineText[index]", "index", mainLineText[index], index)
-                                            return "";
-
-                                    }
+                                    comboBoxFontMetric.font = (fontComboBox.length > index) ?
+                                              fontComboBox[index] :
+                                              fontComboBox[0];
+                                    if(rectangleTextComboBox.comboBoxIndex == rectangleTextComboBox.comboBoxCurrentIndex)
+                                   {
+                                       var tmp = mainRow;
+                                       tmp[index] = elText;
+                                       mainRow = tmp;
+
+                                       if(rectangleTextComboBox.comboBoxCurrentIndex != -1)
+                                       {
+                                           if(index == 0)
+                                               mainLineText = comboBoxFontMetric.elidedText(fullText, Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic);
+                                       }
+                                   }
                                 }
+
                             }
 
                         }
-                        Rectangle
-                        {
-                            id: endRowRectangle
-                            height: parent.height
-                            width: endRowPadding
-                            color: "transparent"
-                        }
+
+                    }
+                    onComboBoxCurrentIndexChanged:
+                    {
+                        mainLineText = comboBoxFontMetric.elidedText(getModelData(currentIndex, comboBoxTextRole[0]), Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic);
+                        console.log("mainLineText", mainLineText)
                     }
                 }
 
@@ -165,89 +134,11 @@ DapComboBoxForm
             highlighted: parent.highlightedIndex === index
         }
 
-    function checkElidedText(fontMetric, textMetric)
-    {
-        return textMetric.elidedText.substring(0, textMetric.elidedText.length-1) +
-                ((fontMetric.tightBoundingRect(textMetric.elidedText.substring(0, textMetric.elidedText.length-1)).width +
-                  fontMetric.tightBoundingRect(textMetric.text.charAt(textMetric.elidedText.length-1) + '..').width) < textMetric.elideWidth ?
-                     (textMetric.text.charAt(textMetric.elidedText.length-1) + '..')
-                   : '..');
-    }
 
     function getModelData(rowIndex, modelRole)
     {
         return model.get(rowIndex)[modelRole];
     }
 
-    function setModelDataWidth(rowIndex, fontMetric, rowWidth)
-    {
-        comboBoxTextRoleWidth = [0];
-        mainLineText = [""];
-        var neededWidth = 0;
-        for(var i = 0; i < comboBoxTextRole.length; i++)
-        {
-            mainLineText[i] = "";
-            comboBoxTextRoleWidth[i] = fontMetric.tightBoundingRect(getModelData(rowIndex, comboBoxTextRole[i])).width;
-            neededWidth += comboBoxTextRoleWidth[i];
-        }
-        neededWidth += roleInterval * (comboBoxTextRole.length - 1);
-        console.log("neededWidth", neededWidth, "rowWidth", rowWidth);
-        var oneIndex = 0;
-        if (neededWidth > rowWidth)
-        {
-            oneIndex = comboBoxTextRole.indexOf(mainLineRole);
-            if(oneIndex === -1)
-            {
-                oneIndex = comboBoxTextRole.indexOf("text");
-                if(oneIndex === -1)
-                {
-                    oneIndex = comboBoxTextRole.indexOf("name");
-                    if(oneIndex === -1)
-                        oneIndex = 0;
-                }
-            }
-            if(comboBoxTextRoleWidth[oneIndex] < neededWidth - rowWidth)
-            {
-                comboBoxTextRoleWidth[oneIndex] = rowWidth / (comboBoxTextRole.length);
-                var maxWidth = 0;
-                var maxIndex = 0;
-                while(neededWidth > rowWidth)
-                {
-                    maxWidth = comboBoxTextRoleWidth[0];
-                    maxIndex = 0;
-                    for(i = 0; i < comboBoxTextRoleWidth.length; i++)
-                    {
-                        if(maxWidth < comboBoxTextRoleWidth[i])
-                        {
-                            maxWidth = comboBoxTextRoleWidth[i];
-                            maxIndex = i;
-                        }
-                    }
-                    comboBoxTextRoleWidth[maxIndex] -= 10 * pt;
-                    neededWidth = 0;
-                    for(i = 0; i < comboBoxTextRoleWidth.length; i++)
-                        neededWidth += comboBoxTextRoleWidth[i];
-                }
-            }
-            return true;
-        }
-        if(neededWidth < rowWidth)
-        {
-            oneIndex = comboBoxTextRole.indexOf(mainLineRole);
-            if(oneIndex === -1)
-            {
-                oneIndex = comboBoxTextRole.indexOf("text");
-                if(oneIndex === -1)
-                {
-                    oneIndex = comboBoxTextRole.indexOf("name");
-                    if(oneIndex === -1)
-                        oneIndex = 0;
-                }
-            }
-            comboBoxTextRoleWidth[oneIndex] += rowWidth - neededWidth;
-            return true;
-        }
-        return false;
-    }
 
 }
diff --git a/widgets/DapComboBoxForm.ui.qml b/widgets/DapComboBoxForm.ui.qml
index 448ea087c467a907d180ee7a558b486b053afb84..b063a2b9d4030699077d21389b34d7f5ae8ebe49 100644
--- a/widgets/DapComboBoxForm.ui.qml
+++ b/widgets/DapComboBoxForm.ui.qml
@@ -59,23 +59,31 @@ ComboBox
     property string colorTopNormalDropShadow
     ///@detalis colorDropShadow Unboxed shadow color in expanded state.
     property string colorDropShadow
+
     ///@detalis fontComboBox Font setting combobox.
-    property alias fontComboBox: dapComboBox.font
-    //@detalis mainLineText Text without unneccesary part.
-    property var mainLineText: [""]
+    property var fontComboBox: []
+    ///@detalis colorTextComboBox Color text setting combobox: array [normalColorText, hilightColorText] for every role
+    property var colorTextComboBox: []
+    ///@detalis colorMainTextComboBox Color mainline text setting combobox: array [normalTopColorText, hilightTopColorText] for every role
+    property var colorMainTextComboBox: []
+    ///@detalis elideTextComboBox Elide setting combobox.
+    property var elideTextComboBox: [Text.ElideRight]
+    ///@detalis alignTextComboBox Align setting combobox.
+    property var alignTextComboBox: [Text.AlignLeft]
 
     ///@detalis comboBoxTextRole The model roles used for the ComboBox.
-    property var comboBoxTextRole: ["name"]
+    property var comboBoxTextRole: ["text"]
     ///@detalis comboBoxTextRoleWidth The model roles width used for the ComboBox.
     property var comboBoxTextRoleWidth: [100]
     ///@detalis roleInterval The width between text of model roles used for the ComboBox.
-    property int roleInterval: 5
+    property int roleInterval: 10
     ///@detalis endRowPadding The width of padding at the end of one row at ComboBox where it is need.
-    property int endRowPadding: 0
-
-    ///@detalis mainLineRole The model role for the main line of cloded ComboBox.
-    property string mainLineRole: "name"
+    property int endRowPadding: 10
 
+    ///@detalis mainRow The model role for the main line of cloded ComboBox.
+    property var mainRow: [""]
+    //@detalis mainLineText Text without unneccesary part.
+    property string mainLineText
 
 
     width: popup.visible ? widthPopupComboBoxActive : widthPopupComboBoxNormal
@@ -107,30 +115,40 @@ ComboBox
     contentItem:
         Rectangle
         {
+            id: mainRectangle
             anchors.fill: parent
             anchors.verticalCenter: parent.verticalCenter
             anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
-            width: widthPopupComboBoxNormal - indicatorWidth - indicatorLeftInterval
-            color: "transparent"
-            Row
+             color: "transparent"
+
+             Row
             {
+                id: topComboBoxRow
+                width: widthPopupComboBoxNormal - indicatorWidth - indicatorLeftInterval
+                height: mainRectangle.height
                 spacing: roleInterval
                 Repeater
                 {
-                    id: mainLineRepeater
-                    model: popup.visible ? comboBoxTextRole.length : 1
+                    id: textCurrentRepeater
+                    model: (popup.visible) ? comboBoxTextRole.length : 1
                     Text
                     {
-                        id: mainLineComboBoxText
-                        height: dapComboBox.height
-                        text: index >= mainLineText.length ? "" : mainLineText[index]
-                        horizontalAlignment: (index === 0) ?
-                                                 Text.AlignLeft :
-                                                 ((index === comboBoxTextRole.length - 1) ? Text.AlignRight : Text.AlignHCenter)
-
-                        font: fontComboBox
-                        color: popup.visible ? hilightColorTopText : normalColorTopText
-                        verticalAlignment: Text.AlignVCenter
+                        anchors.verticalCenter: parent.verticalCenter
+                        text: (popup.visible) ?
+                                  mainRow[index] :
+                                  mainLineText
+                        font: (fontComboBox.length > index) ?
+                                  fontComboBox[index] :
+                                  fontComboBox[0];
+                        width: popup.visible ?
+                                 (topComboBoxRow.width - roleInterval * (comboBoxTextRole.length - 1)) / comboBoxTextRole.length :
+                                   contentWidth
+                        color: popup.visible ?
+                                   colorMainTextComboBox[index][1] :
+                                   colorMainTextComboBox[index][0]
+                        horizontalAlignment: popup.visible ?
+                                                 alignTextComboBox[index] :
+                                                 Text.AlignLeft
                     }
                 }
             }
@@ -183,5 +201,6 @@ ComboBox
             verticalOffset: topEffect ? 9 * pt : 0
             samples: topEffect ? 13 * pt : 0
             color: topEffect ? (dapComboBox.popup.visible ? colorDropShadow : colorTopNormalDropShadow) : "#000000"
+            z: -1
         }
     }
diff --git a/widgets/DapTextForm.ui.qml b/widgets/DapTextForm.ui.qml
index 3cf02ce9aa04ae50a5233b8072e876504962e219..7aeebc2868ec2938b80e0ce131eafffca02d0afb 100644
--- a/widgets/DapTextForm.ui.qml
+++ b/widgets/DapTextForm.ui.qml
@@ -10,7 +10,7 @@ TextInput
     ///@detalis elText Elided text string
     property string elText
     ////@detalis fontDapText Font setting combobox.
-    property alias fontDapText: dapText.font
+    property font fontDapText
     ///@details elide Elide style.
     property int textElide: Text.ElideRight
     ///@detalis textMetric Text Metric to elide text
@@ -26,7 +26,7 @@ TextInput
     TextMetrics
     {
         id: dapTextInputTextMetric
-        font: parent.font
+        font: fontDapText
         elide: textElide
         text: fullText
     }
@@ -35,7 +35,7 @@ TextInput
     FontMetrics
     {
         id: dapTextInputFontMetric
-        font: parent.font
+        font: fontDapText
     }
     text: elText
 }