Как сделать выделенный текст в текстовой области полужирным, курсивом и т. Д., А затем добавить его в форматированный текст?

Я сделал выделенный текст в текстовой области жирным шрифтом, курсивом и т. Д., Но я не могу поддерживать свойства жирного шрифта, курсива при добавлении текста в форматированный текст.


person Sunil486    schedule 03.05.2013    source источник


Ответы (1)


Хорошо, смотри. Давайте разберем нашу проблему шаг за шагом:

Проблема: у нас есть текст, и нам нужно выделить выделенный текст исходного текста жирным шрифтом;

Решение:

1) Возьмите выделенный текст в отдельную строку

2) Измените стиль отдельной строки на полужирный (или другой стиль)

3) Соберите начальные нежирные строки с жирным жалом и покажите результат :)

Я думаю, что есть несколько способов решить эту проблему, но я предлагаю следующее:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="Test">
<s:VGroup>
    <s:RichEditableText id="ret" text="Test Text String for selection" />
    <s:Button id="btnBold" label="Set Bold for Selection" click="btnBold_clickHandler(event)"/>
</s:VGroup>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.TextConverter;

        protected function btnBold_clickHandler(event:MouseEvent):void
        {
            setBoldForSelectionTex();
        }

        private function setBoldForSelectionTex():void
        {
            var startSelectionPos:int   = 0;
            var endSelectionPos:int     = 0;

            if(ret.selectionActivePosition > ret.selectionAnchorPosition)
            {
                endSelectionPos     = ret.selectionActivePosition;
                startSelectionPos   = ret.selectionAnchorPosition;
            }
            else
            {
                endSelectionPos     = ret.selectionAnchorPosition;
                startSelectionPos   = ret.selectionActivePosition;
            }

            var initialString:String    = ret.text;
            var startString:String      = ret.text.toString().substr(0, startSelectionPos);
            var middleString:String     = ret.text.toString().substr(startSelectionPos, endSelectionPos - startSelectionPos);
            var endString:String        = ret.text.toString().substr(endSelectionPos, initialString.length - endSelectionPos);
            var completeString:String   = startString +"<b>" + middleString + "</b>" + endString;

            ret.textFlow = TextConverter.importToFlow(completeString, TextConverter.TEXT_FIELD_HTML_FORMAT);
        }
    ]]>
</fx:Script>
</s:View>

Я надеюсь, что это поможет вам.

person proweb    schedule 03.05.2013