UniGui. Как получить id элемента, входящего в другой элемент?

В одной из тем форума UniGui проскакивал вопрос – как настроить фокус для input элемента Ext.form.field.HtmlEditor. По совету одного из форумчан Delphi Developer это делалось такой строкой

Если с Ext.get(‘some_id’).focus(); все понятно, то непонятно как формировался id элемента.

Мне стало интересно как формируется id и я полез во внутренности ExtJS и UniGui

Если создать UniGui проект в Delphi и положить на форму один единственный элемент UniHTMLMemo, то после запуска в браузере можно наблюдать такой код

С первой частью id все ясно, в данном случае O13_id, это id самого элемента Ext.form.field.HtmlEditor, далее нам нужно получить фокус на поле ввода. Покопавшись немного во внутренностях метода createInputCmp, я пришел к выводу что при определении класса Ext.form.field.HtmlEditor , в частности, создается массив

Мы видим, что тут 2 ключевых элемента, это textarea и iframe.

Далее, немного проанализировав исходный код, можно понять, что id создается из 3 элементов.

id самого элемента htmleditor

id = me.id + ‘-inputCmp’ //здесь к нему плюсуется inputCmp в методе getInputCmpCfg

{id}-iframeEl // ну и последний элемент плюсуется непосредственно в массиве componentTpl

В итоге у нас получается

И почему + в начале, по правилам яваскрипта это преобразование типов, к числовому типу.

This entry was posted in UniGui. Bookmark the permalink.