![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 23
|
Здравствуйте!!! я создал компонент:
.мне нужно сделать выделение текста по щелчку в TextArea и вставить выделенное в TextInput. в TextField позволяет это сделать с кучей свойств, и как я понимаю у TextArea есть свойство TextField... подскажите как все это лучше реализовать??? заранее спасибо. |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 17
|
Если нужно реализовать просто выделение текста, то это можно сделать так:
А если нужно больше функциональности, то лучше всего пронаследовать компонент TextArea и работать с protected свойством textField напрямую. public class MyTextArea extends TextArea { public function MyTextArea { addEventListener(Event.ADDED_TO_STAGE, eventAddedToStage); } private function eventAddedToStage(e:Event):void { textField.text = "My text"; textField.setFocus(); textField.setSelection(0, textField.length); } } Последний раз редактировалось Касеал; 14.09.2009 в 14:34. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 23
|
Видете ли TextArea показавыет только сплошной текст в виде Mazda /n Mitsubishi
и как мне повесить ивент по щелчку на конкретное слово?... результат должен получиться как в гугле... набираешь ма, он предлогает мазда - щелкаешь => вставляется мазда в инпут и директит. |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 17
|
Дело в том, что если я правильно понял, что Вы хотите, то для этой цели в Google используется совсем другой компонент, похожий на компонент ListBox. Немного непонятно, зачем использовать TextArea. Но всё же если очень хочется, то подобный алгоритм можно было бы организовать и в TextArea, только это будет не совсем тривиальная задача.
У компонента textField есть свойство getCharIndexAtPoint, которое может вернуть позицию каретки в textField в том месте, где находится курсор мышки. Например на событие MouseEvent.MOUSE_MOVE возвращаете позицию каретки в текстовом поле. После чего, "собираете" относительно этой позиции слово до разделителей "\r", слева и справа, делать это можно, например с помощью регулярных выражений. После чего у вас будут индексы левой и правой границы слова. Вызываете textField.setSelection(begIndex, endIndex) и слово будет выделено. Само слово можно хранить, например в строке и при событии MouseEvent.CLICK присваивать эту строку в поле ввода. Но для Вашей цели делать это всё не очень умно, можно использовать ListBox, там для этого уже всё есть. P.S. Если конечно я правильно понял постановку задачи. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 23
|
Спасибо большое за совет) почему то захотелось использовать TextArea, но вы правы удобнее использовать листбокс))
Но хотелось бы узнать все таки: TextArea добавляется компонентом через <mx:>, - Могу ли я испозьзуя компонент TextArea достучаться до свойств textfield, не добовляя TextField на экран addChild'ом? Допустим если мне нужен метод getCharIndexAtPoint использовать для TextArea. |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 17
|
Компонент TextArea собран из нескольких элементов. Один из этих элементов - IUITextField. У этого элемента есть все необходимые Вам свойства. Т.к. этот элемент объявлен как protected, достучаться к нему просто так не получится.
Самый лучший способ для Вас это пронаследовать компонент TextArea, как указано в моём первом посте. После этого, Вы сможете из главного файла его подключить так: После этого Вы сможете обращаться ко всем свойствам TextArea через id. Одна проблема, textField вы через id не увидите с этого файла. Получить ссылку на textField можно таким способом: В Вашем пронаследованном от TextArea классе, объявляете свойство: На событие Event.ADDED_TO_STAGE - Потом пишите get-ер: После всех этих манипуляций, в Вашем главном классе, Вы сможете через id, получить ссылку на textField компонента TextArea и делать с ним всё, что Вам нужно. Последний раз редактировалось Касеал; 17.09.2009 в 19:00. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 23
|
Спасибо большое!!!))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|