|
17.02.2009, 12:32 | #1 |
Боец
|
Где же это поле?! (Form digger)
Очередной гаджет для удобства работы в системе. Уверен, пригодится как разработчикам, так и консультантам\конечным пользователям.
Основное предназначение - мгновенный и очень удобный поиск любого поля на любой форме аксапты, в т.ч. в TableBrowser. Искать можно по метке поля на форме, либо по системному имени поля таблицы, отображаемого где-то на форме. Возможности:
Подробное описание здесь Доступны версии для DAX 3.0, 4.0. Для DAX 2009 пока не решена проблема с визуальным выделением полей на форме, но это на 70% красивость и на 30% нужность. А так, в принципе, можно пользовать. Хочу также отметить, что это beta версия, буду благодарен за сообщения о найденных ошибках\замечаниях. |
|
|
За это сообщение автора поблагодарили: mazzy (5), blokva (5), belugin (5), kashperuk (5), Pasha_x (1), Logger (6), Ace of Database (2), Lucky13 (3), lev (1), Russland (2), oip (5), Kolja (1), AlexArh (1), miklenew (5), alex55 (3), nano3 (1), _scorp_ (2), Eaglet (1), Товарищ ♂uatr (1). |
17.02.2009, 12:48 | #2 |
Участник
|
В Tabax-e есть кнопки которые быстро открывают активную форму и активный элемент.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
17.02.2009, 12:59 | #3 |
Боец
|
Цитата:
В Tabax-e есть кнопки которые быстро открывают активную форму и активный элемент.
Пример: Вы не знаете, где на SalesTable находится поле "RMA-номер". Для поиска вам нужно прощелкать и просмотреть чуть ли не все закладки\поля. В данном случае, открыв форму SalesTable, вы нажимаете "Alt+~" и вводите несколько букв искомого поля: "RM". FormDigger автоматически откроет нужную закладку на SalesTable и обведет поле "RMA-номер" красной рамкой. |
|
18.02.2009, 09:13 | #4 |
Пенсионер
|
Цитата:
Сообщение от DSPIC
Суть не в этом. Инструмент для поиска полей, а не для просмотра активного элемента.
Пример: Вы не знаете, где на SalesTable находится поле "RMA-номер". Для поиска вам нужно прощелкать и просмотреть чуть ли не все закладки\поля. В данном случае, открыв форму SalesTable, вы нажимаете "Alt+~" и вводите несколько букв искомого поля: "RM". FormDigger автоматически откроет нужную закладку на SalesTable и обведет поле "RMA-номер" красной рамкой.
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
17.02.2009, 13:35 | #5 |
Участник
|
Прикольно. Только я думаю будет лучше убрать из проекта класс SysSetupFormRun, а изменения, которые в нем делаются, выложить сюда. А то по ошибке можно лишиться изменений в этом классе.
|
|
17.02.2009, 13:47 | #6 |
Боец
|
Цитата:
Будет лучше убрать из проекта класс SysSetupFormRun, а изменения, которые в нем делаются, выложить сюда. А то по ошибке можно лишиться изменений в этом классе.
метод \Classes\SysSetupFormRun\task X++: //EVO: 31.01.09 #DEV02 Find from control by name --> if (!FormDigger::overloadButton(this, _p1)) //EVO: 31.01.09 #DEV02 Find from control by name <-- ret = super(_p1); X++: FormDigger::overloadButton(this, _p1) |
|
17.02.2009, 15:28 | #7 |
Участник
|
Странно, безобидное сравнение слоев перед импортом - сломало класс sysSetupFormRun
Аккуратнее. Изменения в этом классе лучше внести руками. |
|
|
За это сообщение автора поблагодарили: DSPIC (1). |
17.02.2009, 16:05 | #8 |
Боец
|
|
|
17.02.2009, 15:34 | #9 |
Участник
|
Предлагаю внести небольшие изменения в метод initFromFormControl таблицы FormDiggerTmpData, а то получается не очень информативно, если на форме несколько источников
X++: void initFromFormControl(Object _formControl, int _parentId = 0, FormRun _fr) { ; if ( !_formControl) return; this.Name = _formControl.userPromptText() ? _formControl.userPromptText() : _formControl.labelText(); this.Id = _formControl.id(); this.ParentId = _parentId; if (FormDigger::formControlIsDataBound(_formControl)) { this.IsDataBound = NoYes::Yes; if (_formControl.dataField()) { //добавляем имя источника this.FieldMethodName = _fr.form().dataSource(_formControl.dataSource()).name()+'.'+fieldId2name(_fr.form().dataSource(_formControl.dataSource()).table(), _formControl.dataField()); } else { if ( !this.FieldMethodName) { //добавляем имя источника и скобки к имени метода this.FieldMethodName = _fr.form().dataSource(_formControl.dataSource()).name()+'.'+_formControl.dataMethod()+'()'; this.isMethod = NoYes::Yes; } } } } |
|
|
За это сообщение автора поблагодарили: blokva (2), Logger (2). |
17.02.2009, 16:02 | #10 |
Боец
|
Цитата:
\Forms\FormDigger\Methods\addListItem Но нужно во временную таблицу добавить поле для имени источника данных. Спасибо, учтем в след. версии. Да, ещё заметил, что здесь 2й if() лишний... |
|
17.02.2009, 16:05 | #11 |
Ищущий знания...
|
Цитата:
Сообщение от DSPIC
Подробное описание здесь
"Если флаг "Find by field" («По полю») не установлен, поиск/фильтрация выполняется по наименованию поля (его пользовательской метке), если не установлен – по имени поля таблицы." Обратите внимание дважды написано "НЕ установлен", так, в каком случае как работает? Правильно ли я понял, что если Установлен флаг то поиск по имени поля таблицы, если НЕ установлен то по наименованию поля (метке)?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: DSPIC (1). |
17.02.2009, 16:09 | #12 |
Боец
|
Цитата:
Сообщение от lev
читал ссылку, заметил в одном месте опечатку... фраза:
"Если флаг "Find by field" («По полю») не установлен, поиск/фильтрация выполняется по наименованию поля (его пользовательской метке), если не установлен – по имени поля таблицы." Обратите внимание дважды написано "НЕ установлен", так, в каком случае как работает? Правильно ли я понял, что если Установлен флаг то поиск по имени поля таблицы, если НЕ установлен то по наименованию поля (метке)? Поправил, спасибо. |
|
17.02.2009, 16:13 | #13 |
Ищущий знания...
|
Это Вам спасибо! отличная утилита!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
18.02.2009, 11:09 | #14 |
Участник
|
А почему на сайте блога нету самих проектов??
|
|
18.02.2009, 11:23 | #15 |
Боец
|
|
|
18.02.2009, 11:23 | #16 |
Участник
|
Маленькое дополнение, если кто-то пойдет моим путем:
X++: if ( !this.FieldMethodName) { if (_formControl.dataSource()) this.FieldMethodName = _fr.form().dataSource(_formControl.dataSource()).name()+'.'+_formControl.dataMethod()+'()'; this.isMethod = NoYes::Yes; } |
|
18.02.2009, 11:30 | #17 |
Участник
|
40 символов - предельное значение для любого объекта АОТ
|
|
18.02.2009, 11:32 | #18 |
Участник
|
|
|
18.02.2009, 12:54 | #19 |
Боец
|
Цитата:
Сообщение от Lucky13
Маленькое дополнение, если кто-то пойдет моим путем:
X++: if ( !this.FieldMethodName) { if (_formControl.dataSource()) this.FieldMethodName = _fr.form().dataSource(_formControl.dataSource()).name()+'.'+_formControl.dataMethod()+'()'; this.isMethod = NoYes::Yes; } Дело в том, что в режиме поиска по полю происходит фильтрация именно по "this.FieldMethodName". Поэтому, дописав сюда дополнительные буквы вы сломаете фильтрацию... Ещё раз повторюсь, что эту доработку лучше сделать в месте, где формируется FormListControl, а не на таблице. При этом в таблицу можно добавить новое поле для имени таблицы датасорса. Последний раз редактировалось DSPIC; 18.02.2009 в 13:10. |
|
20.02.2009, 16:02 | #20 |
Снова балуюсь косаптой :)
|
Большое спасибо за Ваш труд! Очень полезная утилита. Непонятно - почему что-то похожее не было реализовано разработчиками, на системном слое.
Что бы хотелось видеть в следующей версии, если она будет (новое/исправленное):
__________________
Бесты и регарды! |
|
|
За это сообщение автора поблагодарили: DSPIC (3). |
Теги |
ax3.0, ax4.0, download, formdigger, tools, инструменты, полезное, форма |
|
|