| # | Название | Описание | Автор |
|---|---|---|---|
| 1 | "DX Хранилище файлов" - модуль работы с файлами | "DX Хранилище файлов" - загрузка/выгрузка, хранение, сканирование и манипуляции с одним или группой файлов. Документация |
jurist23rus |
| 2 | AdvancedTables - частичное редактирование таблиц и запросов, и не только | Модуль расширений позволяет совместить редактирование записи в окне и в табличной части форм и запросов. Модуль состоит из следующих действий:
|
admin |
| 3 | ALLOW_SYMVOLS. (Проверка текста на допустимые символы) | Функция проверяет текст на содержание в нем допустимых символов. Примечание: после установки расширения функция появится в группе "Текст". |
Гocть |
| 4 | AutoLabels - расширение для лентяев | Добрый день! Все, кто начинал новую базу с чистого листа, наверняка начинают со структуры базы, раскидывая поля по формам и не заботясь, на начальном этапе, о внешнем виде. Павел позаботился о нас и сделал отображение имен компонентов на самих компонентах. Но, при тестировании базы, видим такое: Мне пришло в голову написать расширение, которое будет автоматически расставлять метки полей. У меня сложился стиль, что метки я ставлю сразу над полем чуть меньшим шрифтом. Получилось довольно симпатично. Не думаю, что стоит оставлять это расширение в "боевой" базе, но для отладки и понимания как это может выглядеть -- самое то. Якоря поддерживаются, но надо тестить... Версия 2.0 1. Теперь расширение для MainForm и работает по всем формам. 2. Не добавляются метки к скрытым полям. 3. Поддержка мониторов Hi-DPI. Теперь метки не сползают. 4. Работает с RecID полями. 5. Если первый или последний символ имени поля - пробел, метка не создается. 6. Добавлена обработка флажков. Если надпись на флажке отсутствует, то вставляется имя флажка. Не нужно == внесите в надпись пробел. Пример базы: Расширение: |
Runenkov |
| 5 | AutosizeGrid-авторастягивание столбцов (AutoFillColumns ) | Простенькое расширение. Включает свойство grid-а AutoFillColumns. Работает в таблицах и запросах. Выбрать таблицу (для таблицы формы - оставить пустой), и номер столбца для фиксации ширины 1..ХХ. Если столбец не указан, то все столбцы растягиваются одинаково. P.S. admin как-то обещался добавить в стандартные настройки грида. |
drts |
| 6 | DX Loger - модуль логирования действий пользователя | DX Loger - это комплекс, состоящий из взаимодействующих и программно связанных друг с другом форм и модуля расширений, в совокупности предназначенный для организации системы логирования (журнализирования) определённых действий пользователя и фиксации изменений в журнале событий. Автор: jurist23rus Последняя версия: 3.3f от 20.06.2023 (fix admin) Документация |
jurist23rus |
| 7 | DX PLUS | Множество полезных вещей. Расширение включает в себя следующие действия: Действия кнопки 1. Быстрые массовые вычисления в форме. 2. Быстрые массовые вычисления в таблице. 3. Копировать в буфер обмена. 4. Открыть папку в проводнике. 5. Показать окно ожидания. 6. Показать окно списка. 7. Скрыть окно ожидания. 8. Создать закладку с формой. Запросы 9. Включить автообновление запроса. 10. Дублировать запись запроса. 11. Обновить запрос. 12. Отключить автообновление запроса. 13. Синхронное обновление запросов. 14. Установить сортировку запроса. Отчеты 15. Вставить из окна отчета 16. Подбор из окна отчета Простая форма 17. Открыть простую форму Таблица 18. Добавить запись в таблицу. 19. Заполнить таблицу из запроса. 20. Изменить группу записей в таблице. 21. Изменить запись в таблице. 22. Очистить таблицу. 23. Удалить запись в таблице. Текущая форма. 24. Вставить значения в поля текущей формы. 25. Дублировать запись по кнопке. 26. Начать добавление записи в текущую форму. 27. Начать редактирование записи в текущей форме. 28. Отменить изменения в текущей форме. 29. Перейти на запись текущей формы. 30. Сохранить запись текущей формы. 31. Удалить запись текущей формы. Форма. 32. Добавить запись в форму. 33. Заполнить форму из запроса. 34. Показать запись формы. 35. Редактировать запись формы. 36. Удалить записи формы. Действия формы 37. Дублировать запись. 38. Переместить кнопки на панель кнопок. 39. Показать значение из запроса. 40. Показать картинку из запроса. 41. Показать картинку из объекта. События 42. Двойной клик в запросе. 43. Клик после добавления записи. 44. Клик после изменения поля. 45. Клик при сохранении записи. Действия при запуске 46. Добавить разделитель на панель инструментов. 47. Кнопка на панели инструментов. |
admin |
| 8 | DX Хранилище файлов альтернативный вариант | FileKeeper Автор: Pozharskiy1991 Версия: 0.1 Описание Расширение FileKeeper добавляет на форму кнопки для работы с файловым хранилищем. Позволяет прикреплять файлы к записям, открывать хранилище, вести учёт файлов и управлять ими. Расширение является развитием идеи, заложенной в действии «DX Хранилище файлов». Возможности
Как это работает
Настройка Основные параметры:
Путь к папке назначения:
Имя файла:
Дополнительные настройки:
Обновление запросов:
Примеры выражений Для подпапки:
Для имени файла:
Особенности
Примечания
|
Pozharskiy1991 |
| 9 | EncodeDecodeURL - кодирование и декодирование символов неразрешенных в веб-адресе в шестнадцатеричный формат | В составе две функции и действие для кнопки. Позволяет кодировать в символы для строки браузера любые символы. Вторая функция позволяет декодировать обратно. Сначала для кодирования использовал встроенную функцию EncodeURLElements но она преобразует https:// тоже, а это не удобно. Поэтому добавил свою функцию. |
cordek |
| 10 | EvalExp - Модуль вычисления функций, произвольно внесенных пользователем | Иногда бывает нужно провести произвольные вычисления, поэтому вот функция, которая получает на вход в виде текста другие функции и обрабатывает их. Можно и поля формы указывать, поля объектов и т.д. обрабатывается всё в контексте текущей формы. Позволяет выполнить произвольные функции. Заполнять функции надо также, как в редакторе выражений и в контексте текущей формы. Результатом будет строка, поэтому если необходимо сохранить в поле текст, дата или время, то используйте соответствующие функции для преобразования CNUM, CDATE, CTIME. Может пригодится для произвольных расчетов, когда вариантов расчета много а плодить поля на форме не хочется. Все функции для расчетов можно просто сохранить в базе, и при необходимости выбирать нужную. Можно даже задействовать DB функции. В общем большой простор для творчества. |
cordek |
| 11 | Form template | Название: Form template (SaveFieldValues) Версия: 1.0 Автор: Pozharskiy1991 Описание: Расширение позволяет сохранять текущие значения полей ввода на форме и быстро их восстанавливать. Управление осуществляется через три кнопки: "Сохранить поля", "Применить поля", "Сбросить поля". Надписи на кнопках настраиваются в UI расширения. Возможности: • Сохранение значений всех полей ввода на форме • Применение сохранённых значений одним нажатием • Сброс настроек (удаление сохранённых значений) • Отдельные настройки для каждого пользователя • Настройки сохраняются в INI файлы в папке FieldSettings Использование: 1. Добавьте действие "Сохранение значений полей" в настройках базы данных (Target=main) 2. Настройте надписи для кнопок (или оставьте значения по умолчанию) 3. При необходимости укажите путь к папке для сохранения настроек 4. Перезапустите базу данных 5. На любой форме создайте кнопки с указанными надписями Примечания: • Поддерживаются компоненты: TdxEdit, TdxCalcEdit, TdxDateEdit, TdxTimeEdit, TdxCounter, TdxMemo, TdxCheckBox, TdxComboBox, TdxLookupComboBox • Если путь не указан, настройки сохраняются в папку FieldSettings рядом с программой • Настройки сохраняются отдельно для каждого пользователя базы данных |
Pozharskiy1991 |
| 12 | georgiy-QueryColumns: ширина и видимость столбцов в запросах | Расширение для управления шириной и видимостью столбцов в запросах. В выражениях добавляет раздел "Столбцы запросов" с функциями: - получить ширину столбца Code: Выделить всё COLUMN_GETWIDTH('Название запроса', 'Название столбца')- задать ширину столбца (отрицательное значение вызовет ошибку) Code: Выделить всё COLUMN_SETWIDTH('Название запроса', 'Название столбца', 200)- прибавить положительное/отрицательное значение к текущей ширине столбца (при попытке ухода ниже нуля значение ширины устанавливается 0) Code: Выделить всё COLUMN_ADDWIDTH('Название запроса', 'Название столбца', 20)- получить видимость столбца (0 - невидим, 1 - видим) Code: Выделить всё COLUMN_ISVISIBLE('Название запроса', 'Название столбца')- задать видимость столбца (у установленных ещё дизайнере скрытых столбцов ширина 0, поэтому при включении видимости их невидно, пока дополнительно не будет задана ширина больше 0) Code: Выделить всё COLUMN_SETVISIBLE('Название запроса', 'Название столбца', 0)- переключить видимость столбца (видимый -> невидимый, и наоборот) Code: Выделить всё COLUMN_TOGGLEVISIBLE('Название запроса', 'Название столбца')Пример: |
georgiy_ |
| 13 | georgiy-Wiz_Debug: помощь в отладке скриптов и действий | Модуль, упрощающий отладку. Способы применения: 1) Включить в свой модуль {$I georgiy-Wiz_Debug}.После чего можно использовать: - порог вывода сообщений отладки (константы: _TRACE; _DEBUG; _INFO; _SUCCESS; _FAIL; _WARN; _ERROR;_CRITICAL; _NOTHING) - функции: - - Dbg(level, mode, msg): level - порог вывода сообщения, mode - текущий порог, ниже которого сообщения выводиться не будут, msg - текст сообщения- - DbgT(mode, msg): сообщение уровня _TRACE- - DbgD(mode, msg): сообщение уровня _DEBUG- - DbgI(mode, msg): сообщение уровня _INFO- - DbgS(mode, msg): сообщение уровня _SUCCESS- - DbgF(mode, msg): сообщение уровня _FAIL- - DbgW(mode, msg): сообщение уровня _WARN- - DbgE(mode, msg): сообщение уровня _ERROR- - DbgC(mode, msg): сообщение уровня _CRITICAL- - DbgSep(s, n): сепаратор - n раз повторенный символ s- - GetType(v): название типа переменной- - GetName(obj): название класса2) В разделе функций WIZ/Дебаг можно использовать функцию WIZ_DBG('Сообщение')3) В действиях базы данных, формы и кнопки WIZ/Дебаг -> Вывести отладочное сообщение. В вычисляемом поле указывается сообщение, чекбокс включает и отключает вывод сообщения (чтобы не удалять и не добавлять каждый раз в зависимости от надобности). Пример в модуле формы: Code: Выделить всё {$I georgiy-Wiz_Debug}Результат: Code: Выделить всё ===============================Результат функции и действий: Code: Выделить всё [11:13:58] USER Привет |
georgiy_ |
| 14 | georgiy-Wiz_Text: функции для работы с текстом | Модуль, содержащий функции для работы с текстом. Для работы требует установки модуля georgiy-Wiz_Debug >= v1.2.0. https://forum.mydataexpress.ru/viewtopic.php?f=16&t=5697 Добавляет в раздел функций WIZ/Текст: - WIZ_REPEAT('*', n) - возвращает строку, повторенную n раз.- WIZ_START_WITH('август', 'ав') - проверяет, начинается ли строка с подстроки. Результат 1 - да, 0 - нет.- WIZ_END_WITH('август', 'ст') - проверяет, заканчивается ли строка подстрокой. Результат 1 - да, 0 - нет.- WIZ_SLICE('привет', x, y) - возвращает строку-срез с позиции x по y включительно, нумерация с 1.- WIZ_SLICE_N('привет', x, n) - возвращает строку-срез с позиции x длиной n, нумерация с 1.- WIZ_CUT('привет', x, y) - возвращает строку, с удаленными из строки символы с позиции x по y включительно, нумерация с 1.- WIZ_CUT_N('привет', x, n) - возвращает строку, с удаленными из строки символы с позиции x длиной n, нумерация с 1.- WIZ_COUNT('чайка у причала', 'ча') - возвращает число повторений подстроки в строке.- WIZ_LTRIM(' чайник ') - возвращает строку, удаляет слева все пробелы и переносы строк.- WIZ_RTRIM(' чайник ') - возвращает строку, удаляет справа все пробелы и переносы строк.- WIZ_TRIM(' чайник ') - возвращает строку, удаляет слева и справа все пробелы и переносы строк.- WIZ_NO_SPACE(' чай ник ') - возвращает строку, удаляет все пробелы из строки.- WIZ_NO_DBL_SPACE(' чай ник ') - возвращает строку, удаляет все более чем 1 подряд идущие пробелы (т.е. в результате не будет более чем одного пробела подряд).- WIZ_NO_NEWLINE('чайник') - возвращает строку, заменяет все переносы строк на пробелы.Пустые поля/Null - будут считаться пустой строкой или 0 в соответствующих аргументах функций. |
georgiy_ |
| 15 | georgiy-Wiz: управление компонентами | georgiy-Wiz v1.0.0 – Управление компонентами формы Раздел «Компоненты» 1. В редакторе выражений в функции добавляет раздел WIZ • Получить координату X компонента (относительно родительского). WIZ_GET_X('Компонент')• Получить координату Y компонента (относительно родительского). WIZ_GET_Y('Компонент')• Получить ширину компонента. WIZ_GET_WIDTH('Компонент')• Получить высоту компонента. WIZ_GET_HEIGHT('Компонент')• Переместить компонент формы в указанные координаты (внутрь родительского компонента, опционально). Указать пустую строку '', для смены родителя на Форму. WIZ_MOVE_TO_XY('Компонент', 'Родитель', 10, 50)WIZ_MOVE_TO_XY('Компонент', '', -10, -20)• Изменить ширину и высоту компонента. Отрицательные значения заменятся на 0. WIZ_RESIZE('Компонент', 100, 35)• Получить видимость компонента. 0 - невидим, 1 - видим. WIZ_GET_VISIBLE('Компонент')• Изменить видимость компонента. 0 - невидим, остальные числа - видим. WIZ_SET_VISIBLE('Компонент', 1)• Инвертировать видимость компонента. WIZ_TOGGLE_VISIBLE('Компонент')• Получить доступность компонента. 0 - недоступен, 1 - доступен. WIZ_GET_ENABLED('Компонент')• Изменить доступность компонента. 0 - недоступен, остальные числа - доступен. WIZ_SET_ENABLED ('Компонент', 1)• Инвертировать доступность компонента. WIZ_TOGGLE_ENABLED('Компонент')2. В редакторе действий формы добавляет раздел WIZ/Компоненты • Переместить компонент в XY (действие формы) Переместить компонент формы в указанные координаты (внутрь родительского компонента, опционально) • Изменить размер компонента (действие формы) Изменить размер компонента. Отрицательные значения заменятся на 0. • Показать/скрыть компоненты (действие формы) Изменить видимость компонентов. Вначале выполняется скрытие, потом показ, потом инверсия видимости. (На основе трех соответствующих таблиц). • Активировать/деактивировать компоненты (действие формы) Изменить доступность компонентов. Вначале выполняется деактивация, потом активация, потом инверсия доступности. (На основе трех соответствующих таблиц). • Добавить подсказки для компонентов (действие формы) 3. В редакторе действий кнопки добавляет раздел WIZ/Компоненты • Переместить компонент в XY Переместить компонент формы в указанные координаты (внутрь родительского компонента, опционально) • Изменить размер компонента Изменить размер компонента. Отрицательные значения заменятся на 0. • Показать/скрыть компоненты Изменить видимость компонентов. Вначале выполняется скрытие, потом показ, потом инверсия видимости. (На основе трех соответствующих таблиц). • Активировать/деактивировать компоненты Изменить доступность компонентов. Вначале выполняется деактивация, потом активация, потом инверсия доступности. (На основе трех соответствующих таблиц). • Добавить подсказки для компонентов Раздел «События» 1. В редакторе выражений в функции добавляет раздел WIZ • Кликнуть по кнопке указанной формы. WIZ_CLICK('Загловок формы', 'Кнопка')2. В редакторе действий формы добавляет раздел WIZ/События • Кликнуть кнопку при смене закладки (действие формы) (При создании Формы создает TdxLabel с именем dxLabel_OnTabChanged_ + название панели закладок TdxPageControl, в текст TdxLabel вписывает название кнопки. При смене вкладки считывает название кнопки и кликает ее.) • Кликнуть кнопку при наведении мыши (действие формы) (на компонент формы) (Аналогичный механизм, TdxLabel с dxLabel_OnMouseEnter_+ название компонента) • Кликнуть кнопку при покидании мыши (действие формы) (компонента формы) (Аналогичный механизм, TdxLabel с dxLabel_OnMouseLeave_+ название компонента) • Кликнуть кнопку при клике на компонент (действие формы) (Аналогичный механизм, TdxLabel с dxLabel_OnClick_+ название компонента) • Кликнуть кнопку при двойном клике на компонент (действие формы) (Аналогичный механизм, TdxLabel с dxLabel_OnDblClick_+ название компонента) 3. В редакторе действий кнопки добавляет раздел WIZ/ События • Кликнуть кнопку на любой форме Раздел «Поля» 1. В редакторе действий формы добавляет раздел WIZ/Поля • Обновлять Заметки (действие формы) Обновлять Заметки при изменении. Например, поле используется как фильтр запроса. По умолчанию фильтр не будет срабатывать, пока не будет изменен фокус на другой компонент. При использовании же этого действия запрос будет обновляться при любом изменении в поле. • Пересчитать Заметки после изменения записи запроса (действие формы) Пересчитывает выражения Заметок при изменении выделенной записи в запросе. Нужно, когда выражение ссылается на данные из столбца выделенной записи. (При создании Формы создает TdxLabel с именем dxLabel_OnQueryAfterScrol_ + название запроса TdxQueryGrid, в текст TdxLabel вписывает список названий TdxMemo. При смене выделения считывает названия TdxMemo и пересчитывает выражения.) Раздел «Закладки» 1. В редакторе выражений в функции добавляет раздел WIZ • Получить название активной закладки на панели закладок любой формы. WIZ_GET_TAB('Загловок формы', 'Панель закладок')• Активировать закладку на панели закладок любой формы. WIZ_SET_TAB('Загловок формы', 'Закладка')2. В редакторе действий кнопки добавляет раздел WIZ/Панели закладок • Активировать закладку на любой форме Раздел «Запросы» 1. В редакторе выражений в функции добавляет раздел WIZ • Получить ширину столбца в запросе WIZ_QCOL_GET_WIDTH('Название запроса', 'Название столбца')• Установить ширину столбца в запросе. Отрицательное значение будет заменено на 0. WIZ_QCOL_SET_WIDTH('Название запроса', 'Название столбца', 200)• Прибавить положительное или отрицательное значение к текущей ширине столбца. Если получается отрицательная ширина, то она заменяется на 0. WIZ_QCOL_ADD_WIDTH('Название запроса', 'Название столбца', -10)• Видим ли столбец в запросе. 1 - видим, 0 - невидим. WIZ_QCOL_GET_VISIBLE('Название запроса', 'Название столбца')• Отобразить/скрыть столбец. 0 - невидим, остальные числа - видим. WIZ_QCOL_SET_VISIBLE('Название запроса', 'Название столбца', 0)• Переключить видимость столбца. (У изначально скрытых в дизайнере столбцов при включении видимости ширина равна 0, поэтому их не видно). WIZ_QCOL_TOGGLE_VISIBLE('Название запроса', 'Название столбца')• Отобразить указанные столбцы. Указанные столбцы станут видимыми и отобразятся в указанном порядке, остальные станут невидимыми. Изначально скрытые в дизайнере столбцы имеют ширину 0, поэтому дополнительно им нужно задать ширину, чтобы их стало видно. Если передан Null в названия столбцов - нет действий. WIZ_QCOL_SHOW('Название запроса', 'Название столбца 1;Название столбца 2')• Получить индекс столбца в запросе. Индексация начинается с 1. WIZ_QCOL_GET_INDEX('Название запроса', 'Название столбца')• Переместить столбец и вставить на указанный индекс. Индексация начинается с 1. Если индекс меньше 1, то переместить на первую позицию. Если индекс больше количества столбцов, то переместить на максимальную позицию. (Не забывать, что скрытые столбцы считаются!) WIZ_QCOL_SET_INDEX('Название запроса', 'Название столбца', 2)• Получить значения выделенной записи в указанном столбце в виде строки. Если записей или значение Null - вернуть Null. WIZ_QCOL_GET_STR_VALUE('Название запроса', 'Название столбца')• Получить значения в указанном столбце в виде строки значений через указанный разделитель. Если записей нет - вернуть Null. WIZ_QCOL_GET_STR_VALUES('Название запроса', 'Название столбца', ';')2. В редакторе действий кнопки добавляет раздел WIZ/Запросы • Показать/скрыть столбцы запроса Изменить видимость столбцов запроса. Вначале выполняется скрытие, потом показ, потом инверсия видимости. (На основе трех соответствующих таблиц). • Изменить ширину столбцов в запросе Изменить ширину столбцов в запросе. Отрицательные значения ширины будут заменены на 0. • Изменить порядок столбцов в запросе Изменить порядок столбцов в запросе. Выбранные столбцы будут отображены в указанном порядке. Изначально скрытые в дизайнере столбцы имеют ширину 0, поэтому не будут видны при отображении, пока не будет установлена положительная ширина. P.S. кроме Заголовка формы, Названия запроса, Названия столбца, все прочие названия - это кодовые названия компонентов (смотреть в дизайнере). |
georgiy_ |
| 16 | Html-форматирование текста в таблице | Форматирование текста в ячейке в соответствии с html-подобной разметкой. В поле или в выражении должна присутствовать html-разметка, которая определяет цвет, стиль и размер текста. Исходный шрифт, цвет фона, выравнивание текста определяется по настройкам столбца. Перенос текста зависит от настроек табличной части. Форматирование текста задается при помощи открывающих и закрывающих тегов. Все теги, кроме BR, имеют закрывающий тег. Примеры: Code: Выделить всё Привет, <b>МИР!!!</b>Для работы расширения требуется файл htmltextlib.dll (во вложении). Скопируйте его в папку программы. |
admin |
| 17 | HTTP_GET - Функция для выполнения простого web-запроса | Функция: "HTTP_GET". Функция для выполнения HTTP-запроса методом GET (все параметры в URL). Группа: "Интернет" Может пригодится во многих случаях, где веб-сервисы отвечают на запрос простым текстом (plain). Коллекция таких сервисов с примерами использования будет пополняться ниже. Примеры: Code: Выделить всё setfield('Результат',Результат: https://bitly.su/xhzd Примечание: API ключ регистрируем свой. Это бесплатно. Code: Выделить всё setfield('Результат',Результат: Ваш внешний IP адрес интернет Code: Выделить всё setfield('Результат',Результат: ДД.ММ.ГГГГ ... Примечание: Запрос выполняется в синхронном режиме и при задержках в ответах от запрашиваемых сервисов или с медленным интернетом могут происходит подвисания интерфейса программы. [ Скачать ] |
Develop-Soft |
| 18 | IDDT Идентификатор по времени и дате. | Простенький код для получения уникального ключа из даты и времени. Code: Выделить всё {@functionТеперь уже знаю про таймштамп. |
SirWolf |
| 19 | ImgAsImageName - интерактивная кнопка | Первый раз пишу на форуме сделал такое расширение, может кому пригодиться. Основная функция модуля ImgAsImageName. Сделать dxImage интерактивной: При наведении курсора изменяет изображение При уходе курсора возвращает изображение. При нажатии выполняет клик по указанной кнопке. Модуль связывает картинку с визуальной реакцией на курсор и с действием кнопки, упрощая создание интерактивных элементов на форме. |
K_A_SPER |
| 20 | j-функции | j-функции Автор: Jurist23rus DX Loger - служит для организации системы логирования (журнализирования) определённых действий пользователя в журнале событий вашей базы данных. DX Хранилище файлов - модуль работы с файлами в базе данных. Форматирование даты и времени - модуль содержит функции для представления даты и времени в нужном формате. Модуль:j-modul Версия: 7.1 от 27 октября 2017 г. Описание: содержит функции. Объединяет в одну строку значения столбца таблицы. Аналог штатной функции Merge, но в отличие от последней позволяет фильтровать результат. Code: Выделить всё MergeIf ('ИмяДочернейФормы', 'ИмяПоля', ';', '[ИмяПоля]<>null')Обновляет запрос расположенный на форме. Code: Выделить всё QueryUpdate ('ИмяЗапроса')Возвращает модуль числа. Самостоятельно, без вмешательства пользователя, определяет тип передаваемых функции данных, будь то число, строка или null, производит конвертирование в нужный формат и вычисления. Code: Выделить всё ABC ([Любое поле])Можно забыть об этом: nz (ABС ([Числовое поле]), 0) ABC (cnum ([Текстовое поле])) Функция сама сделает преобразования. Модуль: AutoCloseForm Версия: 3.1 от 14 июля 2017 г. Описание: содержит функцию AutoCloseForm. Автоматически закрывает форму через установленный промежуток времени. Code: Выделить всё AutoCloseForm (120, 30, 'OffTimer')Версия 3.2: - в данной версии функция не сохраняет сделанных на форме изменений данных, а отменяет их, так как сохранение данных, в некоторых случаях приводило к ошибке. Для тех кому важно сохранение данных, при закрытии функцией формы и на форме нет пустых обязательных полей как в этом примере может продолжать пользоваться версией 3.1 Версия 3.1: - попытка закрыть предупреждающее окно комбинацией клавиш Alt+F4 не прервёт работу функции и будет равносильно нажатию второй кнопки в окне, то есть произойдёт отключение таймера либо его перезапуск, в зависимости от заданных параметров. - оптимизирован и модернизирован код (внешне это никак не видно, но в будущем исключит возможные ошибки совместимости с другими функциями или скриптами). Версия 3: -полная поддержка запросов, в том числе с таблицей на нем; - поддерживает работу до 5 запросов на форме (больше делать не стал, не вижу смысла); -при использовании в дочерней форме выводит сообщение в штатное окно ошибок функции (красный пятачок на форме) не нарушая работу программы (защита от тех кто не читает справку); - ввёл третий параметр, позволяющий менять назначение кнопки на окне сообщения: кнопка может выключать таймер или откладывать его (на усмотрение разработчика базы). Модуль: ExportToExcel Версия: 1.1 от 19 ноября 2017 г. Описание: содержит функцию ExportToExcel + действие для кнопки. Экспортирует данные формы в Excel Code: Выделить всё ExpotToExcel ('', 'Поле1;Поле2;Поле3', '')v.1.0 - для DX версий до 12 ноября 2017 г., то есть версий без "активных кнопок" v.1.1 - содержит графическую оболочку в виде действия в кнопке (см. скриншот), её можно устанавливать только на DX от 12 ноября 2017 г. и более поздние выпуски. |
jurist23rus |
| 21 | kok80_SummInStatusBar сумма значений поля в строке состояния | При выборе нескольких строк формы в режиме таблица выводится количество выбранных строк и сумма значений полей в строке состояния. Настройка для каждой формы отдельно. Количество знаков после запятой берется из настроек поля. |
kok80 |
| 22 | kok80-ExportToExcel (LibreOffice calc) | kok80-ExportToExcel ver 3.2 возможности (выбираются в действиях при запуске): - экспорт в Excel/LibreOffice calc/автовыбор при запуске базы - кнопку на панель главной формы(экспорт активной формы) - кнопку на панель всех запросов - в контекстное меню всех форм - в контекстное меню всех форм: выделенные строки - в контекстное меню всех запросов - в контекстное меню всех запросов: выделенные строки - в контекстное меню всех сводных таблиц - мультивыбор во всех формах - мультивыбор во всех запросах - текстовой формат в Excel для текстовых полей (строка 0001 будет экспортироваться 0001, а не 1) в действиях формы: - Форма - сделать мультивыбор - Запросы формы - сделать мультивыбор (выбрать нужные запросы) Если подключить модуль как внешний {$I kok80-ExportToExcel}, то можно использовать Code: Выделить всё procedure GridToExcel(sender:TObject)в качестве sender понимает TdxForm, TdxQueryGrid, TdxSQLQuery, TdxPivotGrid. Экспорт осуществляется через буфер обмена, если в буфере был текст-он восстанавливается после экспорта. Демо kok80-ExportToExcel 3.1 |
kok80 |
| 23 | kok80-LOG | kok80-log выводит в LOG-форму действия пользователей (создание, удаление, изменение записей, вход, выход из базы, время начала и конца работы). Для работы необходимо выбрать форму для LOG (добавить в вашу базу новую форму). На нее поместить поля (можно не помещать ненужные, не будут заполняться): UserID - ID юзера, тип компонента ЧИСЛО FormID - ID формы, тип компонента ЧИСЛО ComponentID - ID компонента, тип компонента ЧИСЛО FormRecID - RecID формы события, тип компонента ЧИСЛО Action - код действия, тип компонента ЧИСЛО ValueInt - поле для хранения всех нетекстовых данных, тип компонента ЧИСЛО. ValueStr - поле для хранения текстовых данных (необходимую длину определяете сами, если значение длиннее - будет обрезаться), тип компонента ТЕКСТ Дата - дата события, тип компонента ДАТА Время - время события, тип компонента ВРЕМЯ В действиях при запуске существующие поля формы привязываем к полям в настройках. Другие настройки: - ограничить вывод лога, количество строк. - интервал в мин бездействия юзера для log [не работал]: интервал в минутах, создается таймер, который проверяет работал ли юзер (вызывались ли события OnAfterScroll, EditWindow.OnShow). Если указать 0 или пусто - активность юзера не будет отслеживаться и выводиться в LOG. - cкрыть из popup меню формы LOG юзеров с кодами: сюда указываем коды юзеров, которые не будут добавлены в контекстное меню на форме LOG (например, давно уволенные). Посмотреть номера через контекстное меню на форме LOG. - в контекстное меню Grid формы: в контестное меню форм добавляет пункт LOG. На нужных формах выбираем нужные поля в "Действия формы" Особенности: Добаляется действие KOK80_log, можно повесить на любую кнопку. Все данные кроме текстовых значений при изменении полей хранятся в виде чисел. На выбранной форме LOG в контекстное меню добавляются расшифровки и пункты для слежения за активностью юзера. На самой форме LOG: Порядок и состав форм, выводящихся в расшифрованный LOG, соответствуют сортировке и фильтру формы (если хотите LOG по порядку изменений - делайте сортировку по полю RecID или дата/время). В создаваемой таблице LOG в контектное меню добавлен пункт "экспорт в EXCEL" - работает только при установленном расширении kok80-ExportToExcel версии 4.0 и выше. В планах сделать расшифровку LOG кликабельной, при измении размера окна изменять ширину текстового LOG поля. В DEMO базе пароль 1. |
kok80 |
| 24 | kok80-ObjectAndQueryOnDBLClick | Устанавливает OnDBLClick на все объекты, поля объектов, запросы на всех формах: при двойном клике открывается исходная форма в режиме редактирования, если позволяют права доступа, вне зависимости от состояния (чтение/редактирование) исходной формы. В DataExpress, если исходная форма в режиме только для чтения, все формы из нее тоже открываются в режиме только для чтения (для объекта нет в контекстном меню "изменить"). Для запросов предыдущий обработчик OnDBLClick вызывается только в случае ошибки или нескольких источников-форм в запросе (иначе бы 2 раза подряд открывалась исходная форма). Как всегда, писал для себя, но пожелания и баг репорты приветствуются. |
kok80 |
| 25 | kok80-QueryDublicate | Кнопка дублировать на панели и в контекстном меню всех запросов базы. | kok80 |
| 26 | kok80-поиск ссылок | Поиск ссылок на форму по всем объектам базы из контекстного меню grid формы и запроса. Поддерживает рекурсию (поиск ссылок в найденных формах). возможность выбора нескольких значений для поиска ссылок замена во всех найденных ссылках значений на другое добавлена поддержка расширений kok80-ExportToExcel (выгрузка найденных ссылок в xls) и kok80-poisk (при выборе значения для замены) Пароль в примере - 1 |
kok80 |
| 27 | Kroks-функции | KROKS-функции Автор: Kroks Описание: добавляет новую функцию. K_ZAGOLOVOK_OKNA - выводит в заголовок окна редактирования записи заданный текст. K_KIR_LAT - транслитерация кириллицы в латиницу. |
jurist23rus |
| 28 | Metadata - Метаданные и структура таблиц | Выводит метаданные форм в Debug. Может вывести просто в текст или HTML, также поддерживает несколько текстовых форматов описаний баз данных: PlantUML, DBML, DOT, Mermaid.js - которые можно использовать для визуализации связей в соответствующих сервисах. https://www.plantuml.com/plantuml для PlantUML https://dbdiagram.io/d для DBML> https://www.devtoolsdaily.com/graphviz для Graphviz / Dot https://www.mermaidchart.com для Mermaid.js Визуализация может работать плохо при большом количестве таблиц, но в принципе можно попробовать в текстовом режиме убрать лишние связи и оставить нужные. Полезно будет для составления документации, а также если вы накидали много таблиц и объекты, а теперь с трудом ориентируетесь. Делать веб-версию не вижу смысла |
cordek |
| 29 | NSORT. Функция "естественной" (как в Windows) сортировки значений списка. | Может использоваться для сортировки списка файлов и каталогов, IP-адресов, результатов, полученных из встроенных и других функций, прочих произвольных списков. ![]() Параметры: 1. [текст] Текст с разделитем CR+LF (#13#10, newline - комбинация возврата каретки и символа новой строки.). Результат: Отсортированный текст с исходным разделителем. Пример: Code: Выделить всё NSORT(Результат: Code: Выделить всё Текст 1Примечание: Использует медленный алгоритм и НЕ рекомендуется для сортировки больших (>1000 строк) текстов. |
Develop-Soft |
| 30 | RecordEditor - функции работы с данными | RecordEditor Автор: jurist23rus Версия: 2.4 Последнее обновление: 14 июня 2021 г. В этом модуле содержится действие для кнопки «Закрыть текущую форму» и функции: OpenRec - открывает для редактирования (в отдельном окне) указанную запись указанной родительской формы. AddRec - добавляет новую запись в указанной родительской форме. TAddRec - добавляет новую запись в таблицу. TDeleteRec - удаляет записи в таблице согласно заданному фильтру. DeleteRec - удаляет записи родительской формы согласно заданному фильтру. DbMergeA - соединяет значения нескольких полей в одну строку. CreateRec - создаёт запись в родительской форме и заполняет поля формы заданными значениями. EditingRec - вносит изменения, согласно заданным параметрам, в указанное поле, указанной записи, указанной родительской формы Скачать | Веб-версия |
jurist23rus |
| 31 | RegExp_kok80 | Немного извращений. Функции для работы с регулярными выражениями, используются в выражениях полей. function RegExp_Execute(pattern, aIncomming: string):integer; Поиск соответствующих шаблону вхождений в строке-оригинале. Возвращает количество найденных подстрок. Коллекцию найденных подстрок сохраняет во внутреннюю переменную. Требуеся последующий вызов RegExp_free. function RegExp_MatchesCount:integer; возвращает число совпадений после вызова RegExp_Execute function RegExp_get(MatchNum: integer):string; Из коллекции найденных строк возвращает строку с номером MatchNum function RegExp_getSubstr(MatchNum,SubMatchNum: integer):string; Из коллекции найденных строк возвращает подстроку SubMatchNum строки MatchNum function RegExp_loop(x1,x2:integer; expression:string):variant; Выполняет выражение expression в цикле от x1 до x2. В expression можно указывать %x - заменяется на номер цикла. procedure RegExp_free Очищает внутренние переменные после вызова RegExp_Execute function Preg_match(pattern, aIncomming: string):string; Поиск соответствующих шаблону вхождений в строке-оригинале. Возвращает первую найденную строку. Не требуется вызов RegExp_free. function ButtonControl_click(Name: string):string; Нажимает кнопку (может такое уже есть, но я не нашел) В примере: при изменении красных полей, зависимые с формулами пересчитываются. При нажатии кнопки происходит заполнение таблицы из Memo. ps писал для личных целей, может у кого будут какие мысли, как это можно использовать во вблаго человечества. Как вариант - загружать в диалоге текстовой файл, и инфо из него по регулярным выражениям заносить в таблицу, импорт CSV и т.д. |
kok80 |
| 32 | Smart-сканер | Назначение: Иструмент для многостраничного сканирования документов, сборки их в PDF-файлы и автоматической регистрации в системном хранилище FileStore.<br> 1. Архитектура и движок 1. WIA (Windows Image Acquisition): Используется для прямого захвата изображений с локальных (USB) сканеров. 2. NAPS2 Console Engine: Используется для работы с сетевыми МФУ через заранее настроенные TWAIN-профили. Это гарантирует стабильную связь в локальных сетях и Wi-Fi. 3. PowerShell PDF Engine: Модуль не требует установки сторонних PDF-библиотек. Сборка осуществляется встроенным в Windows движком печати через виртуальный принтер "Microsoft Print to PDF". 2. Режимы работы 1. Локальное сканирование (WIA) Когда использовать: Для простых USB-сканеров. Плюс: Не требует сторонних утилит, работает мгновенно через стандартный диалог Windows. 2. Сетевое сканирование (NAPS2 Profiles)<br> Когда использовать: Для сетевых МФУ, Wi-Fi сканеров и работы через RDP. 2. Интеграция с FileStore Требования для внедрения ОС: Windows 10 или 11 (наличие компонента "Microsoft Print to PDF"). Софт: Установленный NAPS2 (в папку по умолчанию) для сетевого режима. Права: Наличие прав на запись в папку C:\Temp\Scan\ (создается автоматически) и целевую папку архива. |
xxDeMoXxx |
| 33 | SpinEdit из компонента ЧИСЛО | Так как меня тут не заметили, пришлось ваять расширение. Добавляет к компоненту ЧИСЛО кнопки UP/DOWN, нажатие на которые в режиме редактирования формы увеличивает/уменьшает значение выбранного числового поля. Работает только если отключена стандартная кнопка компонента ЧИСЛО в контекстном меню компонента. 08.05.20 v 1.1 Добавил управление колёсиком мыши. Демо |
drts |
| 34 | SQL отрисовка произвольного запроса | Действие кнопки. Отрисовка произвольной строки SQL, позволяет использовать скорость и функционал чистого SQL. Таблицу выводит на TdxPivotGrid. Для замены название столбиков используем формат Name@@Название (Name - название что будет запрошено в SQL, Название - будет назван столбик при отрисовке). Строку запроса (выражение) можно фирмировать функцией concat. Пример строки прикрепил. Code: Выделить всё concat( |
Иван |
| 35 | Альтернативная (настраиваемая) печать | Действие позволяет выбрать другую форму для печати или задать её имя в выражении, необходимо задать также id записи. Если форма и id не заняты, то печать будет из текущей формы. Шаблон также ставится в виде выражения, как и путь для сохранения готового документа. В результате выполнения действие возвращает путь к сформированному (напечатанному) файлу. Можно потом использовать имя файла, например сохранить куда-нибудь. Возможны ошибки, если запись форму будет не в состоянии редактирования. Вообще можно печатать и не открывая на редактирование, но мне нужно именно открывать. Предлагайте еще функции, про которые забыл. |
cordek |
| 36 | Аналог расширения Управление видимостью/доступностью компонентов | Здравствуйте! Написал свой аналог расширения «Управление видимостью/доступностью компонентов», который делает почти то же самое, но с другой логикой. Выбранные компоненты становятся недоступными (невидимыми/нередактирумыми), если условие истинно. В расширении, также можно одновременно задать несколько условий. Например, в форме «Клиенты», в зависимости от статуса клиента (ЮЛ – юридическое лицо, ФЛ - физическое лицо, ИП – индивидуальный предприниматель) некоторые поля должны быть недоступными для заполнения. В частности, при статусе ЮЛ – поле «День рождения», при статусе ФЛ - поля «КПП» и «ОГРН», при статусе ИП – поле «КПП». Сделать это при помощи расширения «Управление видимостью/доступностью компонентов» мне не удалось. Как бы я не старался задать условие и порядок действий в форме, все время какое-нибудь поле становилось то доступным то наоборот недоступным, не так, как это было мне надо. |
dm2002_2002 |
| 37 | Боковая панель навигации | Маленький эксперимент с интерфейсом. 1. Модуль Боковая панель навигации v1.0 Автоматически генерирует интерактивную левую панель навигации. Ключевые возможности: 1. Двухрежимный интерфейс: автоматическое разворачивание оверлея при наведении мыши и сворачивание в компактную миниатюру с иконками-эмодзи 2. Поддержка древовидной структуры: группировка элементов в раскрывающиеся списки-«аккордеоны» с каскадным динамическим пересчетом вертикальных координат Top. 3. Интеграция выражений: возможность привязать к любой кнопке навигации исполняемое выражение (параметр выражения). При клике по кнопке скриптовый движок вычисляет индекс элемента в глобальном реестре PanelData и выполняет выражение. 4. Высокая плотность UI: адаптивное позиционирование элементов, автоматическое резервирование экранного пространства и центрирование миниатюр. 2. Функции боковой панели Содержит функции для боковой панели</br> 1. фУНКЦИЯ ПЕРЕХОДА НА ВКЛАДКУ</br> 2. ФУНКЦИЯ ОТКРЫТИЯ ФОРМЫ (АДАПТИРОВАННАЯ LabelAsLinkBlue) https://forum.mydataexpress.ru/viewtopic.php?f=16&t=3198&p=46250&hilit=Label#p27988 3. фУНКЦИЯ КЛИКА КНОПКИ</br> 4. ФУНКЦИЯ ВЫПОЛНЕНИЯ СКРИПТА 5. ФУНКЦИЯ ЗАПОЛНЕНИЯ ПОЛЕЙ ФОРМЫ 6. Функция создания записи, заполнение полей, обновление запроса отрытой формы 7. Функция поиска компонента на активной форме 8. Функция проверки активной форме и активной вкладке на форме 9. Функция всплывающего окна с компонентами (адаптированная "Всплывающее окно настроек 1.5") https://forum.mydataexpress.ru/viewtopic.php?f=16&t=3728&p=47642&hilit=Всплывающее+окно+настроек+1.5#p32436 |
xxDeMoXxx |
| 38 | Валидация - Проверка обязательных полей | Тип: действие формы (настольная версия) Автор: Qwen3.8 (нейросеть, AI-ассистент) Версия: 1.4 Расширение разработано нейросетью по моему промпту. Поддержку не планирую. Используем на свой страх и риск. Хотите доработать — берите исходник и ковыряйте сами. Вопросы можно задавать в теме — вдруг сообщество подскажет. Что делает Заменяет стандартное поведение свойства «Обязательное» при сохранении записи:
Установка
Как работает (вкратце)
Версия содержит ошибки >>> Скачать <<< |
avk |
| 39 | Ввести на основании | Ввести на основании - действие кнопки. Создает новый документ на основании текущего, заполняет поля и копирует данные подчиненных форм (таблиц). ![]() [ Скачать ] Похожие расширения: "Заполнить по" |
Develop-Soft |
| 40 | Веб-печать | Действие кнопки: "Веб-печать". Выводит указанный контент в браузере посредством встроенного в программе http-сервера.![]() Опции и параметры: Контент для вывода - текстовое содержимое для вывода в браузер. По-умолчанию любой тип передаваемого содержимого отправляется браузеру как html (кодировка utf-8). В выражении могут участвовать поля формы, поля и вычисляeмые поля запроса, переменные (getvar), функции, возвращающие текст или преобразованные к типу "текст". Порт - числовое значение в диапазоне 80-65535 (по-умолчанию 8800). При конфликте выбранного порта с существующим открытым портов в системе - выдается соответствующее сообщение и порт необходимо сменить. Открыть в программе/браузере - принудительно устанавливает указанное приложение для открытия страницы. По-умолчанию пустое и открывает контент через сопоставленный с интернет-страницами браузер в системе. Можно указать коротко: chrome, opera, firefox, iexplore Примечание: - Способ вывода предпочтителен в случаях, когда нежелательно оставлять следы и мусор в файловой системе (браузеру передается поток напрямую). Позволяет использовать теги и код JavaScript, которые при печати не пропускает стандартный html-шаблон. - После отдачи контента браузеру сервер останавливается и нажатие кнопки "обновить" в браузере не даст никакого результата. Для повторного открытия необходимо еще раз нажать кнопку с действием. - Вывод картинок не поддерживается. Скачать демо |
Develop-Soft |
| 41 | Видимость или доступность поле + лейба | Ранее на форуме выкладывал версию этого модуля, чутка доработал к полноценному формату. Обновление 1.5 Добавлено совместимость с модулем MultiStretchFields версии >=1.8. |
Иван |
| 42 | Виртуальный запрос на основе TKGrid (исключает Out of Memory) | Создает виртуальный запрос поверх запроса. При использовании расширения можно просто выбрать запросы которые нужно создавать. Позволяет обойти Out of Memory при большом количестве записей в БД. Поддерживает все функциональные свойства обычного запроса (кроме функций, пока что). Выводит нужное количество записей. Можно добавить на форме список в котором указывать сколько записей выводить иначе выводит количество что входит в видимый запрос. Есть возможность выбрать открывать на двойной клик источник каждого поля или основной источник запроса 'Не открывать формы объектов'. Если при записи выражения для выделения цвета ячейки добавить комментарий //font то будет менять цвет не фон, а текст. Возможность искать по всем полям нужные данные добавив на форме поле для поиска (игнорирует поля даты и времени). Можно добавит на форме чекбокс для возможности Искать без учета регистра. Искать по конкретному столбику, для этого в таблице добавлен пустая строка вводя текст в которую и обновляя запрос будет проведена фильтрация. Поля даты и времени подстраивают дату если она введена с ошибкой (пример: если ввести 12 то выдает 12.06.2020). Возможность искать выражениями (Пример: >10 & < 100). Поле поиска на форме и поиск по столбику могут работать вместе выводя результат по всем запросам. Для удобства работы добавлено функции getq (аналог get), и sumq аналог sum с ограничением: по вычисляемым полям выводит сумму всех отрисованных строк). Ограничения: 1. В выходном фильтре нельзя использовать вычисляемые поля. 2. В выходном фильтре в правой части выражений игнорируются выражения с вычисляемыми полями если нужно получать их данные (пример: если будет выражение [Клиент поле запроса]=iif([:Клиент]<>'', [:Клиент], [Клиент поле запроса]) оно будет включено в фильтр если [:Клиент]<>'' и проигнорировано если [:Клиент]=''. 3. Нет возможности сортировки вычисляемых полей. 4. Нет возможности искать по вычисляемым полям через строку поиска запрашивая данные из БД. 2-е расширение идет комплектом QueryTreeTK. Позволяет создавать дерево групп. Если на форме будет найдено совпадение по форме что добавлена как источник дерева и поля в запросе то будет по нему фильтровать записи. Через установку переменных getvar('Источник дерева название формы'|'Название поля') можно получить доступ к полям формы групп и фильтровать выводимые группы дерева при клике на ноду другого дерева (если на форме объект то в переменную запишет текст объекта). Смотрите описание модуля QueryTreeTK. Версия 1.4: - исправлено ошибку разбора сложных выражений фильтров внешних и внутренних. - добавлены функции (включая баланс). Демо база в виде ссылки. Добавлено 500 тыс. записей несколько вычисляемых полей, деревьев групп, раскраска ячеек. Демо Если у вас какая либо ошибка при использовании пишите в комментарии. |
Иван |
| 43 | Всплывающие подсказки заголовков запроса | Позволяет показывать всплывающие подсказки заголовков запроса. Может показывать текст заголовка, не уместившийся в ширину, либо предустановленную подсказку. Стандартного функционала не нашел. Требовалось сделать себе, оформил в расширение. |
Megabyte |
| 44 | Встроенный браузер | Встроенный браузер CEF (Chromium Embedded Framework). Как пользоваться: 1. Добавить в действия при запуске "Менеджер браузеров". 2. Добавить на форму группу. 3. Добавить действие формы "Встроить браузер" и выбрать группу. Функционал: 1. Простая панель инструментов с кнопками назад, вперед, стоп, обновить, домой и адресной строкой. 2. Закачка файлов. 3. Включение/отключение панели инструментов, загрузки файлов, перехов по ссылкам. 4. Отображение страницы по URL из текстового поля. 5. Автоматическое скачивание необходимых файлов с mydataexpress.ru. Размер скачиваемых файлов более 140 МБ. Распакованные - более 300 МБ. Версия CEF 130.1.16. |
admin |
| 45 | Выбор данных из окна списка | Подобно стандартной функции "Шопинг" действие открывает форму в окне списка, из которого можно выбирать данные (товары, услуги и т. п.) и вставлять в таблицу текущей формы. Дважды щелкните по записи или нажмите ENTER, чтобы добавить данные в таблицу. Пример использования есть здесь (база REGISTERDEMO) в кнопках "Выбрать товар". | admin |
| 46 | Выбор объекта из окна отчета | Альтернатива выбору объекта из выпадающего списка или окна списка. Выбор объекта осуществляется из окна отчета. Плюсом является более гибкая настройки отбора. | admin |
| 47 | Вывод списка форм в ComboBox | Привет всем! Выкладываю расширение, выводящее в компонент списка список всех форм базы. Вдруг кому пригодится... |
Runenkov |
| 48 | Выравнивание содержимого полей | Действие устанавливает положение содержимого колонок таблицы (подчиненной таблицы) и полей формы (подчиненной формы) cправа, слева, по центру. Примечание: можно устанавливать разные положения одного и того же поля в таблице и форме, если внести его в таблицу параметров двумя отдельными строками и установить соотвествующие флаги. Например: Code: Выделить всё Поле Выравнивание В таблице В форме |
Гocть |
| 49 | Вычисляемые надписи в дополнительном статусбаре формы | Ну наконец-то доделал свое расширение, учтя, надеюсь, все свои ошибки и желания Данное расширение добавляет вычисляемые надписи в статус бар окна, в котором отображается таблица формы. Подключать требуется непосредственно к форме справочника или документа. Позволяет выводить сколько угодно вычисляемых надписей, в дополнительные статусбары, по отношению к выделенной записи в табличном представлении формы. Так же, теперь, это расширение, можно подключать к одной форме несколько раз, в итоге будет создано несколько полей с надписями, например для разделения цен и остатков в разных панелях. К примеру можно выводить остаток по товару, цену и др. вычисляемые поля. Но осталось пара вопросов, скорее к автору. 1) Это конечно не критично, но хотелось бы как-то это обойти. На скринах видно, что при отображении в таблице формы, и если открыть эту-же форму через объект, то меняется сортировка надписей и самих статус баров, не считаю это багом, но буду рад совету как это обойти в расширении. 2) При поиске элемента массива по форме, ранее Вы рекомендовали отключать текущий элемент(переменная Disabled:boolean), если не сложно подскажите когда это надо использовать а когда нет. Заранее благодарен. |
Vofka18 |
| 50 | Гео-функции | МОДУЛЬ НЕ РАБОТАЕТ! Список функций модуля: GET_COORDINATES - функция поиска координат на Яндекс-карте по полному или частично введенному адресу. (требуется интернет-подключение) FIND_PT_IN_POLYGON - функция для проверки вхождения одной координаты в полигон, состоящий из массива координат. Может применяться для поиска объекта в заданной зоне(зонах). GET_POLYGON_CENTER - функция поиска приблизительного центра в массиве из множества координат. Может использоваться в качестве указателя при открытии карты в брауере. VIEW_ON_YMAP - функция открывает в браузере Яндекс-карту и ставит отметку на объект или в точку координат (автоопределение передаваемого параметра: координаты, адрес, организация). Более подробное описание имеется внутри функций. Модуль: Демо-база: Расширения списком |
YurAnt |
| 51 | Главное меню | Состав модуля: Функция: CLICK_MENU - Функция ищет пункт меню главного окна по указанному пути и выполняет клик.Действие: "Кликнуть пункт меню". Выполняет аналогичное CLICK_MENU действие.Пример пути для функции/действия: Файл|Подключиться, Сервис|Экспорт данных![]() Демо |
Develop-Soft |
| 52 | Глобальные константы БД | Небольшое расширение позволяет запоминать определенные константы, для дальнейшего использования, при расчетах в базе данных. Например хранить наименование организации, величину наценки на продукцию, и т.д. Обращаться к константам нужно через GETVAR('Наименование переменной'). Выражение может вернуть любой тип. Подключается в действие при запуске. |
Vofka18 |
| 53 | групповое изменение / удаление записей формы / запроса | Писал для себя, пожелания и бегрепорты приветствуются. 1) делает возможность выбора нескольких записей формы (CTRL + мышка, SHIFT+стрелки) 2) групповое изменение записей формы и запросов ("изменить" - срабатывает при выборе >1 записи) 3) групповое удаление записей формы и запросов работает только в формах в режиме ТАБЛИЦА настраивается для каждой формы отдельно (действия формы) Порядок изменения: открывает первую выбранную запись формы все компоненты блокируются, кроме выбранных в настройках (и групповых: группа, закладки) выбранные в настройках поля подсвечиваются желтым (TdxComboBox не меняет цвет при "только значения из списка") поля становятся зелеными при изменении значения при нажатии "Ok" измененные значения применяются к выбранным записям формы Демо ![]() kok80-ChangeGroupFields1.4.zip [ |
kok80 |
| 54 | Дата и время сервера | Расширение добавляет функции для получения даты и времени сервера SRV_TIME SRV_DATE добавил веб-версию |
cordek |
| 55 | Действие "Показать сообщение" но только свое | Модуль расширения Smart-конструктор динамических диалогов Возможности: • Адаптивная верстка с авто-расчетом высоты текста (без наложений). • Поддержка многострочного текста через newline и автоматический перенос слов. • Умная видимость: каждый элемент формы и кнопка могут скрываться по условию. • Проверка обязательных полей с автоматической подкраской и фокусировкой к обязательному пустому полю. • Настраиваемые разделители, стили текста (жирный/красный) и иконки кнопок. |
xxDeMoXxx |
| 56 | Действие и функция для отображения редактора выражений | Сделал небольшое действие для отображения редактора выражений. в действии для кнопки можно выбрать поле, в котором записано выражение и написать имя формы, в контексте которой должно выполняться выражение(форма может быть главная или подчиненная). В функции можно прописать поле, в котором записано выражение, или само выражение, и также написать имя формы, в контексте которой должно выполняться выражение (форма может быть главная или подчиненная). Code: Выделить всё ShowExprEditorFunction([Формула],'Форма1')когда используете действие для кнопки, необходимо самим добавлять в нужное поле Result функции. Полученные выражения можно потом использовать для вычислений через функцию EvalExp([Формула]) или Text('{'+[Формула]+'}') |
cordek |
| 57 | Дерево для запроса | Модуль дает возможность представить данные запроса в виде дерева и использовать его как фильтр для другого запроса. Подробности читайте в справке по действию. Действие называется "Дерево для запроса", группа "Компоненты". 1.3. Исправлена ошибка, возникающая при выборе узла дерева, содержащего кавычки. 1.2. Дерево не учитывало выходной фильтр запроса-источника. 1.1. Исправлена работа с запросами с выборкой из нескольких источников. 1.0. Первая версия. |
admin |
| 58 | Дерево для запроса альтернативная версия | Действие формы. Добавляет дерево к запросу. Берется за основу дерево формы. Испытывал в режиме "Простая форма". Функционал как у дерева формы. Исправленная версия 1.1 Исправленные ошибки:
|
Megabyte |
| 59 | Диаграмма Ганта | Диаграмма Ганта отображает данные в виде боксов (полос) на шкале времени. Масштаб может регулироваться от месяцев до часов. Каждый бокс на диаграмме несет в себе следующую информацию: дата и время начала, дата и время окончания, цвет, текст, всплывающую подсказку, название группы. Данные для диаграммы берутся из запроса. Для работы расширения требуется файл GantChartLib10.dll, который загружается автоматически с сайта mydataexpress.ru и сохраняется в папке программы. Диаграмма отображается в выбранном компоненте "Группа", заполняя всю ее область, включая заголовок. Обязательные для заполнения параметры отмечены звездочкой. В разделе "Временной интервал диаграммы" вы можете указать поля формы, которые будут задавать минимальное и максимальное время, отображаемое на диаграмме. Обычно эти поля служат фильтром для запроса. Если поля не указаны, то временной интервал будет соответствовать минимальному времени начала и максимальному времени окончания из данных запроса. Управления диаграммой осуществляется при помощи мыши. Вы можете прокручивать диаграмму, перемещая мышь с зажатой левой кнопкой. Колесиком мыши можно прокручивать диаграмму по вертикали. Масштаб настраивается колесиком мыши с зажатой клавишей Ctrl. Вы можете указать поле цвета, которым будет окрашиваться соответствующие боксы. Поле должно содержать название цвета (clRed, clGreen, clBlue, clSilver и т. д.) или шестнадцатиричное значение цвета ($0000FF, $00FF00, $FF0000, $CCCCCC, $C0F911 и т. д.). Это может быть поле формы или вычисляемое поле запроса. Данные на диаграмме отображаются в порядке, определяемым запросом. Боксы могут быть сгруппированы, а могут располагаться по одному в каждой строке (параметр "Группировать боксы"). |
admin |
| 60 | Динамическое изменение заголовков закладок | Сделан на основе модуля Управление компонентом "Закладки"(PageControl) от Vofka18 https://forum.mydataexpress.ru/viewtopic.php?f=16&t=4485&p=45364&hilit=ЗАкладки#p39857 Возможности: 1. Вывод в заголовки вкладок любых данных (текст, счетчики, значения полей) через выражения.<br> 2. Автоматическое запоминание последней открытой вкладки для каждой записи.<br> 3. Мгновенное обновление при переключении или изменении данных на форме. |
xxDeMoXxx |
| 61 | Длительная операция с прогрессом | Название: Длительная операция с прогресс-баром Автор: RS47 Версия: 1.0 Описание: Демонстрационное расширение, показывающее работу текстового прогресс-бара при выполнении длительных операций. Возможности: • 5 стилей прогресс-бара (Классический, Блочный, Стрелки, Проценты, Текстовый) • Настраиваемая длительность (1-300 секунд) • Кнопка "Отмена" для прерывания операции • Отображение процентов и счётчика шагов Использование: 1. Добавьте действие "Длительная операция с прогрессом" на кнопку 2. Выберите длительность и стиль прогресс-бара 3. Нажмите OK — запустится операция 4. При необходимости нажмите "Отмена" Примечание: Таймер обновляет прогресс каждую секунду. |
Pozharskiy1991 |
| 62 | Дополнительные кнопки списка | Расширение добавляет пункт в контекстное меню списка для программного нажатия кнопок на форме. Позволяет вызывать любые кнопки (TdxButton) текущей формы через удобное подменю. Возможности - Гибкая настройка - список кнопок задаётся в настройках расширения - Поддержка имен и подписей - можно указывать как имя компонента (btnSave), так и текст на кнопке (Сохранить) - Автоматическая фильтрация - в меню отображаются только кнопки, существующие на текущей форме - Управление активностью - можно временно отключать кнопки без удаления из списка - Подсказки - при наведении на пункт меню отображается подсказка (если задана) - Тихая работа - расширение не показывает лишних сообщений при запуске Как это работает 1. Вы настраиваете список кнопок в расширении (один раз) 2. В контекстном меню любого грида появляется пункт "Нажать кнопку" 3. При наведении открывается подменю со списком доступных кнопок текущей формы 4. Выбираете нужную кнопку - она программно нажимается Настройка 1. Активируйте действие "Добавить пункт 'Нажать кнопку' в меню" 2. В поле "Текст пункта меню" укажите желаемое название (по умолчанию "Нажать кнопку") 3. В таблице "Список кнопок для нажатия" добавьте нужные кнопки: - Активна - чекбокс, показывает/скрывает кнопку в меню - Имя или подпись кнопки - имя компонента (btnSave) или текст на кнопке (Сохранить) - Подсказка - необязательный текст, отображается при наведении 4. При необходимости включите "Показывать сообщения об ошибках" для отладки Примечания - Расширение работает только с кнопками типа TdxButton - Для каждой формы формируется свой набор кнопок (только существующие) Известные ограничения - Не поддерживаются кнопки на панели инструментов (TToolButton) - Поиск кнопки происходит по точному совпадению имени или подписи |
Pozharskiy1991 |
| 63 | Доступ и безопасность | ~~~ Функции выражений ~~~ CHECK_PASSWORD - Проверяет пароль текущего пользователя. Можно использовать для временной блокировки без закрытия програмы или "уточнения" доступа к отдельным формам и компонентам (проверка присутствия легитимного пользователя). CHECK_USER_PASSWORD - Проверяет пароль указанного пользователя. Можно использовать для повышения прав доступа текущему пользователю без закрытия программы или "уточнения" доступа к отдельным формам и компонентам, недоступных текущему пользователю. Вызывает окно смены пароля для текущего пользователя. ![]() Не рекомендуется: Баловаться с паролем единственного разработчика! Примечание: функция модуля CheckSpecifiedUserPassword готова к употреблению в других модулях (например для создания авторизации на http-сервере). |
Develop-Soft |
| 64 | Дублирование записи (действие для кнопки) | Дублирует запись таблицы. В отличие от штатной кнопки таблицы "Дублировать",при установке соответствующей опции может открыть окно редактирования новой записи. Например, чтобы изменить значения каких-то полей перед сохранением записи. |
jurist23rus |
| 65 | Замена кнопок в таблицах и запросах | Расширение позволяет привязать к стандартным кнопкам и пунктам меню таблиц и запросов свою кнопку. Возможности расширения: 1. Замена стандартных кнопок и пунктов меню на свои. 2. Скрытие кнопок и пунктов меню. 3. Добавление своих пунктов меню. 4. Замена кнопки объекта. 5. Скрытие кнопки "Закрыть" в окне редактирования. |
admin |
| 66 | Заполнить по | Расширение для вставки данных из указанной формы в текущую. Похожие расширения: "Ввести на основании" |
admin |
| 67 | Заполнить таблицу в другой форме. | Для личных нужд делал такое вот. Целью было акшен на кнопку, который бы лез в форму с таблицей и заполнял нужные ячейки в ней. Аналог небольшого логирования действий. Используется для контроля распечатки договоров у конкретного пациента. (Какой, когда, кем) Code: Выделить всё {@moduleБуду рад если поможете дописать проверки, дополнения, правки. |
SirWolf |
| 68 | Заполнить таблицу на основании | Примерный аналог функции "Ввести на основании". Данный модуль позволяет создавать новые записи и заполнять их, в том числе и таблицы, на основании данных текущей формы. Для упрощения работы и меньшего количества настроек, модуль разбит на несколько действий для кнопки. Возможности: - Заполнять форму и таблицу формы, из текущей формы и таблицы. - Заполнять форму и таблицу(запрос) формы, из текущей формы и таблицы. - Заполнять форму и таблицу формы, из текущей формы и таблицы(запроса). - Заполнять форму и таблицу(запрос) формы, из текущей формы и таблицы(запроса). - Добавить только одну запись в стороннюю форму или ее таблицу или запрос. Модуль пока тестирую, возможно будут корректировки и исправления. Функции постарался описать максимально подробно. 21.04.2023 ~ обновил вложение - мелкие исправления |
Vofka18 |
| 69 | Запуск Web сервера одновременно с desktop Dataexpress | Не уверен что кому то пригодится, но оставлю тут Данное расширение, позволяет: - Запускать Web-сервер, в локальной сети, одновременно с десктопной версией программы. - Сконфигурировать сервер (обновить файл конфигурации). - Сгенерировать html файл для поиска сервера в локальной сети, если IP адрес неизвестен, или меняется. Файл dx.html будет сгенерирован в папку с файлом базы данных. Открыв данный файл на любом устройстве в локальной сети, сервер будет находить автоматически (без указания IP). Отдельная благодарность пользователю Develop-Soft, за разработку html кода!!! Немного о настройках: Исполняемый файл сервера: Файл сервера dxwebsrv.exe.В пути можно использовать только символы латинского алфавита, цифры и символ _ (По крайней мере у меня сервер не работает если в пути присутствуют русские буквы) Скрыть консоль сервера: При запущенном сервере окно командной строки будет скрыто. Порт: Желательно указать отличный от стандартных. Например 8800 или 12345 Подсеть, для поиска сервера: Подсеть, в которой нужно искать сервер. Например "192.168.1.", допускается указать например полный ip адрес текущей машины (учитывается только первые три цифры), например 192.168.1.123 не вызовет ошибки. Если поле оставить пустым файл dx.html не будет сгенерирован. |
Vofka18 |
| 70 | Запуск файлов в системе (ShellExecute) | Оставлю здесь чтоб не терять Данное расширение является просто оберткой для функции ShellExecute. Функция ShellExecute открывает или выводит на печать указанный файл. Файл может быть исполнимым файлом или файлом документа. |
Vofka18 |
| 71 | Извлечь поле записи по двойному клику | Расширение позволяет извлечь значение поля из подчинённой таблицы или запроса по двойному клику. Извлеченный результат можно записать в текстовое поле или запустить выражение. Можно использовать для выбора записи, открытия сайта или файла, если в таблице/запросе есть поле со ссылкой к ресурсу. Или иным образом запрограммировать с помощью выражений. Пример: Выше в примере выполняется выбор и удаления товара из списка выбранных. Поле для заполнения является заметка "ID выбранных". Так же есть пример открытия сайта по клику, можно посмотреть в DEMO базе. Демо: Расширение: |
shavkat |
| 72 | Изменение функций кнопок модального окна | Доброго времени суток. Данная тема является продолжением https://forum.mydataexpress.ru/viewtopic.php?f=33&t=5393. Удалось собрать небольшой модуль для замены названия кнопок Ок и Отмена. Изначально использовался скрипт формы: Code: Выделить всё procedure ShowButtons(sender :TObject);Но никак не получается реализовать видимость кнопок "Ок, Отмена, Закрыть, Помощь." и не получается назначит действия по клику на другую кнопку |
xxDeMoXxx |
| 73 | Иконки главного меню | Действие запуска. Устанавливает иконки для главного меню программы. ![]() Действие не имеет настроек. Для статичных пунктов меню назначаются соответствующие тематические иконки. Динамическим пунктам меню назначается одна и та же иконка-"заполнитель". Примечание: "опционально" иконки назначены и для пунктов меню дизайнера ![]() В планах: - Добавить пунктам горячие клавиши (где отсутствуют) - (Возможно) изменить названия некоторых МП на более понятные (например: вместо "Подключиться" = "Менеждер подключений") - Добавить хинты (подсказки). (Возможно) перестроить пункты меню. Добавить новые. Демо |
Develop-Soft |
| 74 | Импорт данных из CSV и Excel | Импорт данных из Excel, CSV и других текстовых файлов, где значения отделены друг от друга точкой с запятой. Вы выбираете файл для импорта, программа считывает данные и показывает их вам в табличном виде. Проверьте данные и, если все в порядке, можете их импортировать. Если в данных найдены ошибки, то они выделяются красным цветом. Данные считаются ошибочными, если тип данных не соответствует типу поля или имеют неправильный формат. Строки с ошибками и пустые строки не импортируются. Расширение умеет удалять из числовых данных пробелы, понимает многострочные значения, значения в двойных кавычках (двойные кавычки используются, чтобы символы переноса строки и разделитель данных считались частью значения). Также расширение умеет обновлять данные при импорте. Т. е. программа ищет по определенным полям данные и если они есть, то данные обновляются, в ином случае данные добавляются. Расширение состоит из двух действий для кнопок: импорт в форму и импорт в таблицу. Для работы расширения требуется версия DataExpress не ниже 31.01.2019. 1.2 - Добавлен импорт из Excel. 1.1 - Внесены правки для совместимости с DataExpress от 31.03.2019. 1.0 - Первая версия. |
admin |
| 75 | Импорт платежных поручений из банковской выписки формата 1c.txt | 1. Импорт платежных поручений из банковской выписки формата 1c.txt 2. Функция получает значение параметра из "плоской" текстовой таблицы, в данном случае ищет в тексте фамилию Автор: Develop-Soft |
al.kn |
| 76 | Импорт файлов CSV и подобных | Хочу поделиться своим расширением для импорта файлов CSV и других, в которых данные отделяются символом разделителем. За основу было взято одноименное расширение автора, но в итоге от него осталось пару строк кода... Хоть они и предназначены для одного и того же, но принципиально отличаются. ВАЖНО: перед использованием расширения в рабочей базе, обязательно сделайте бэкап!!! Первым и наверно основным(для меня) отличием является то, что перед импортом данных, их можно обработать в выражениях. Для этого предусмотрены функции в категории "импорт данных CSV", также можно использовать встроенные в DX функции. Например: обрезать текст, выбрать только его часть и т.д. В выражениях нельзя обращаться к полям формы по типу ['Имя поля']. Я не отключил кнопку "Вставить поле формы", только для того, чтобы подсматривать наименования полей объектов(вскоре наверно этого не будет в выражениях). Еще одно отличие - это использование набора данных tdxForm(надеюсь правильно выразился), т.е. в нем не используются SQL запросы. Это значительно снизило скорость импорта, но при такой конфигурации, при импорте срабатывают все вычисляемые поля на формах в которые импортируются данные(мне это было нужно, поэтому так Также предусмотрен собственный DEBUG, в него выводятся информация про импортируемые данные. Расширение подключается к кнопке с минимумом настроек, все остальные действия проводятся внутри окна расширения. На форме почти все элементы кликабельны, и выводят подсказки о своем функционале и назначении. Я постарался максимально все расписать, но может что-то и упустил... При использовании данного модуля, следует быть внимательным, т.к. из-за наличия вычисляемых выражений, и свободы пользователя, не все ошибки можно обработать и предусмотреть. Но основной задачей была именно гибкость настройки импортируемых данных(т.к. часто приходится вносить в базу разные данные от многих поставщиков, и у каждого свой формат документов и т.д.). Во вложении архив с файлом расширения, тестовой базой, тестовыми данными, и папка с настройками расширения(она создастся автоматически при первом запуске на новой БД). Архив нужно распаковать вместе с папкой "importProfiles", она должна находится рядом с файлом *.FDB. Ну пожалуй пока все, в дальнейшем может дополню описание. 27.07.22- Обновил расширение (во вложении), исправил небольшую ошибку в функции COL(). |
Vofka18 |
| 77 | Индивидуальные настройки условий видимости/доступности полей | Автор: Pozharskiy1991 Версия: 1.1 Описание
Возможности
Как это работает
Настройка Основные параметры:
Дополнительные настройки:
Примеры условий
Примеры использования (сценарии)
Особенности работы с компонентами
Примечания
Известные ограничения Невозможно управлять свойством «Редактирование» для компонентов: TdxPageControl, TdxTabSheet, TdxGroupBox, TdxButton, TdxLabel, TdxObjectField, TdxImage, TdxGrid, TdxQueryGrid, TdxShape, TdxPivotGrid, TdxChart Установка Код расширения прилагается. Для установки скопируйте его в новое действие в вашей базе данных. |
Pozharskiy1991 |
| 78 | Информация о подключении | Действие запуска. Добавляет в главное меню кнопку для отображения информации о подключении и версии сервера. ![]() |
Гocть |
| 79 | Клик по кнопке из действия кнопки | Не нашел в DX plus пришлось добавить отдельно. Действие нужно, чтобы кликнуть кнопку из другой или той же самой кнопки. Это плюс, для тех кто хочет зациклить действия как и я. Добавил также веб модуль. Для тех, кто не ленив, можете добавить действия в свой экземпляр DX plus Предупреждаю, что перед зацикливанием действий надо предусмотреть условие выхода, а то выйдет ошибка. Прикладываю пример зацикливания с этим действием и кликом по изменению поля. |
cordek |
| 80 | Кнопка "Печать" в форме, аналог кнопки печать в главном меню | Автор: Develop-Soft, выпадающий список печатных форм как на кнопке печать в главном меню |
al.kn |
| 81 | Кнопка ОК |
|
al.kn |
| 82 | Кнопка очистки поля | Действие формы добавляет в перечисленные поля кнопку очистки. | admin |
| 83 | Кнопка панели инструментов открывающая простую форму | Здравствуйте! В DX_PLUS есть решение, но оно работает через кнопку на другой форме, которая ссылается на форму и запускает её через тулбар. Создал гибридное решение на основе двух событий из DX_PLUS. Добавляет кнопку на панель инструментов главного окна. Кнопка на панели "нажимает" некоторую кнопку на указанной форме. Предполагается, что кнопка находится на простой форме, хотя это и не обязательно. Просто указываем простую форму и запускаем прямо из тулбара. |
albereznyuk |
| 84 | Комбинация клавиш на кнопку (горячие клавиши) | Действие при запуске. Действие назначает на кнопку комбинацию клавиш. Особенности работы:
|
admin |
| 85 | Конвертация файлов MS Word и Excel | Расширение конвертирует файлы Word и Excel в другие форматы доступные приложениям. Аналогично возможности приложений, Файл -> Сохранить как. Для работы действий необходимо наличие установленных приложений Word и Excel. Описание действий: Файл расширения: |
shavkat |
| 86 | Конструктор меню из кнопок | Действие формы: "Конструктор меню". Создает меню из кнопок расположенных в указанной "Группе". ![]() Настраиваемые опции: [Кнопка вызова меню] (обязательная) - любая из кнопок формы, при нажатии на которую будет открываться создаваемое меню. [Группа кнопок для создания пунктов меню] (обязательная) - "Группа", внутри которой будут расположены кнопки (пункты меню). При открытии формы в рабочем режиме группа будет программно скрыта а из находящихся в ней кнопок будет создано меню, раскрывающееся по нажатию "Кнопки вызова меню". В создаваемые пункты меню из кнопок "переезжают": заголовки, иконки, свойства "доступность" и "видимость", событие клика (вычисления/действия/скрипты, завязанные на кнопки выполняются при нажатии на соответствующий пункт меню). Для создания горизонтального разделителя меню достаточно добавить отдельную кнопку между пунктами и указать текст кнопки "-" (дефис). Порядок пунктов меню определяет вертикальное расположение кнопок (в расчет берется верхний край кнопки - свойство "top"). Для изменения порядка достаточно в дизайнере передвинуть кнопки выше/ниже относительно друг друга и пункты меню будут выстроены соответственно. Рецепт видимости/доступности пунктов меню по условию: 1). Скачиваем и устанавливаем расширение "Управление видимостью/доступностью компонентов" отсюда. 2). В него прописываем условие скрытия и ниже в таблице компонентов добавляем требуемые кнопки из группы, участвующие в построении меню. В настройках расширения "Управление видимостью/доступностью компонентов" можно указать любое свойство (Видимость, Доступность) - реакция меню будет соответсвующей. Примечание: На одной форме может быть неограниченное подключение действия (по одному на кнопку со связанной группой кнопок) Вторичное меню (субменю) не поддерживается (и не планируется) Демо [ Скачать ] |
Develop-Soft |
| 87 | Короткие ссылки | Функция для укорачивания url с помощью сервиса clck.ru Code: Выделить всё https://www.google.com/maps/place/Даниловский+р-н,+Москва,+Россия/@55.7071373,37.6016495,13z/data=!3m1!4b1!4m5!3m4!1s0x46b54b4869e4867d:0x87d973c36502b375!8m2!3d55.7054831!4d37.6377914Модуль расширений: |
Гocть |
| 88 | Красим Кнопки и Надписи | Небольшое расширение для обводки кнопок и надписей. Выбираем компонент, цвет обводки и величину обводки. Обновил до 1.2. Добавил покрас всего что только под руку попадет)))) Обновил до 1.4 - Выбор цвета - Толщина обводки |
SirWolf |
| 89 | Математические функции | Расширение реализует математические функции, отсутствующие в стандартном наборе. Реализованные математические функции, включая тригонометрические, логарифмические и другие, сгруппированы по категориям: Тригонометрические функции (радианы) 1. Sinr(a) — синус угла `a` в радианах . 2. Cosr(a) — косинус угла `a` в радианах. 3. Tgr(a) — тангенс угла `a` в радианах (через `Sin/Cos`). 4. Ctr(a) — котангенс угла `a` в радианах (через `Cos/Sin`). 5. Asin(x) — арксинус числа `x` (результат в радианах). 6. Acos(x) — арккосинус числа `x` (результат в радианах). 7. Atan(x) — арктангенс числа `x` (результат в радианах) . 8. Atan2(y, x) — арктангенс `y/x` с учётом квадранта (результат в радианах). 9. Actan(x) — арккотангенс числа `x` (через `Atan2(1, x)`) . Тригонометрические функции (градусы) 1. Sind(a) — синус угла `a` в градусах (преобразуется в радианы: `a * π/180`). 2. Cosd(a) — косинус угла `a` в градусах. 3. Tgd(a) — тангенс угла `a` в градусах (через `Sind/Cosd`). 4. Ctd(a) — котангенс угла `a` в градусах (через `Cosd/Sind`). Логарифмы и экспоненты 1. Ln(x) — натуральный логарифм (`x > 0`). - Если использовали предыдущее расширение с логарифмом, уберите его 2. Log10(x) — десятичный логарифм (`x > 0`). 3. Log(base, x) — логарифм `x` по основанию `base` (`base > 0`, `base ≠ 1`, `x > 0`). 4. Exp(x) — экспонента (`e^x`) [[2]][[3]]. Вспомогательные функции 1. Pi — возвращает значение числа π (3.1415926535897932385). Часть функций работает через SQL, поэтому может работать не корректно на прямом подключении к базе |
cordek |
| 90 | Математические функции - натуральный логарифм | Написал небольшую функцию для вычисления натурального логарифма методом разложения рядов. планирую потом дополнять другими математическими функциями, которые пока отсутствуют в стоке: Синус Косинус и т.п. |
cordek |
| 91 | Модуль DaData | ![]() Быстрый ввод адресов, компаний, банков с помощью подсказок онлайн-сервиса DaData.ru Модуль: Тестовая БД: Внимание! Изменены имена функций! Модуль: Тестовая БД: Демо API-ключ в примере - тестовый. Новый ключ вы можете бесплатно получить после регистрации в сервисе DaData. Примечание: 1. Сохранена совместимость со старыми названиями функций (достаточно установки модуля поверх старой БД). с версии 1.5 имена изменены для удобочитаемости... 2. Plug&Play: "Автономная" работа через WinAPI (отдельная библиотека libcurl.dll не требуется). 3. На linux-версии DX работать не будет, т.к. используется OLE. 4. На linux под wine по идее заработать должен, т.к. wine очень хитёр... работает. 5.Ввиду специфичности и простоты самодельного xml-парсера возможно некорректное отображение результатов запросов вызываемых с тегированными параметрами (DA_FUNC..('param1.param2...') ) . Полноценное решение выложу немного позже. Пофиксено. 1. Выборка искомого объекта из списка нескольких результатов (в отдельном всплывающем окне или выпадающем списке). 2. Прочёс API DaData на предмет расширения функциональности модуля. 3. При необходимости - расширение функциональности модуля для работы с платными API-функциями DaData. |
YurAnt |
| 92 | Модуль drts | drts Автор: drts Версия: 2.0 от 30.08.2017 г. Описание: содержит функции Функция добавляет в контекстное меню пункт для копирования произвольного текста в буфер обмена. Пример: Code: Выделить всё dr_CopyStrToClipboard('Цена изделия:'+ [Цена]+' руб.','Копировать цену изделия',1)Функция добавляет в контекстное меню пункт для копирования значения указанных полей. Пример: Code: Выделить всё dr_CopyToClipboard('Запрос', '"Поле 1","Поле 2","Поле 3"','Скопировать данные полей в буфер',1) Функция добавляет в контекстное меню пункт для копирования значения полей выделенной строки. Пример: Code: Выделить всё dr_CopyAllToClipboard('Запрос1', 'Скопировать данные строки в буфер',0) Функция позволяет включить выделение строки в таблице. Действие аналогично Code: Выделить всё self.grid.options:=self.grid.options+[dgRowSelect];Пример: Code: Выделить всё dr_GridRowSelect('Запрос1')Функция позволяет включить отображение всплывающей подсказки в ячейке таблицы, если текст не полностью помещается в ней. Пример: Code: Выделить всё dr_GridShowHint('Запрос88')В этом модуле содержится функция для добавления в окно TListWindow, панели динамического фильтра. При вводе текста в поле поиска фильтр динамически обновляется. Пример: Code: Выделить всё dr_FilterPanel('Объект 1','Поле3')Для организации поиска одновременно по нескольким полям придется в форме, поиск данных которой осуществляется сделать еще одно поле, где в выражениях и значении по умолчанию создать : Code: Выделить всё //[дата_изменения],[Децимал],[Название],[Описание]поле потом можно скрыть. В этом модуле содержится функция для добавления панель главного окна поля динамического фильтра. При вводе текста в поле поиска фильтр динамически обновляется. Пример: Code: Выделить всё dr_FilterMainPanel('Поле')Для организации поиска одновременно по нескольким полям придется в форме, поиск данных которой осуществляется сделать еще одно поле, где в выражениях и значении по умолчанию создать : Code: Выделить всё //[дата_изменения],[Децимал],[Название],[Описание]поле потом можно скрыть. функция для добавления в заголовок приложения названия БД и имя пользователя Пример: Code: Выделить всё dr_AppNameфункция для добавления в заголовок приложения произвольного названия БД. Пример: Code: Выделить всё dr_AppAnyName('текст')2.0 v1.99 - Исправил ошибку, связанную с передачей фокуса полю поиска. v1.95 - Добавил кнопку для очистки фильтра в функции dr_FilterPanel, dr_FilterMainPanel v1.91 - Исправил ошибки, не позволяющие многократное применение функций v1.83b - Исправил небольшие ошибки. v1.82 - Добавил функцию добавляющую возможность динамической фильтрации в таблице формы из панели главного окна. Изменил механизм добавления фильтра. v1.7 - Добавил функцию копирования произвольного текста в буфер обмена. v1.6 - изменил название глобальных переменных и функций на уникальные (добавил индекс dr_), исправил ошибку из-за которой не срабатывали одновременно функции по параметрам таблицы. v1.5 - добавил возможность применения функций к запросу, заменил true/false на 1/0, объединил с другими своими модулями v1.4 - убрал аргумент у функции dr_GridRowSelect за ненадобностью v1.3 - Добавил функцию включения отображения подсказки ячейки v1.21 - Исправил досадную ошибку в dr_CopyAllToClipboard (при попытке копирования значения пустого поля возникала ошибка) v1.2 - добавил функции копирования всей строки dr_CopyAllToClipboard и функцию включения опции таблицы dr_GridRowSelect v1.1 - появилась возможность указывать несколько полей для копирования Вопросы можно задавать тут |
drts |
| 93 | Модуль EX_EXEC | EX_EXEC Автор: Admin Описание: добавляет новую функцию EX_EXEC - запускает приложение или открывает файл/ссылку в сопоставленном приложении. Поддерживает указание параметров запускаемого приложения.Версия с доработками YurAnt для DX от 12.11.2017 г.: Описание доработки: Совмещены функции выражений + действие: 24.11.17: Оптимизировано "действие" (ранее при отсутствии параметров открывался проводник Windows, теперь ничего не происходит) Совершить исходящий вызов с компьютера на номер телефона: Варианты команды: tel:+79000000000'tel:'+[Клиент|Телефон]'tel:'+get('Запрос_Контакты','Телефон')ДЕМО ...в процессе заполнения... ![]() |
YurAnt |
| 94 | Модуль neitri | NEITRI Автор: Neitri Версия: 0.15.1 от 1 декабря 2018 г. Новое в версии: устранен конфликт IntToHex Описание: содержит набор новых функций. ObjectVisible - Функция для управления видимостью объектов. Если условие истинно, указанный объект отображается иначе будет скрыт. True - Возвращает значение Истина. Code: Выделить всё IIF(TRUE,'Сумма','Итог')False - Возвращает значение Ложь. Code: Выделить всё IIF(FALSE,'Сумма','Итог')TabOff - Функция для отключения перехода на объект по нажатию кнопки Tab. FindObject - Поиск объекта по имени поля. Code: Выделить всё FINDOBJECT('Сумма')SkipReadOnly - Отключает переход на поля компонентов, которые недоступны для редактирования. ReportSave - Печать шаблона в файл. Code: Выделить всё REPORTSAVE('Счет.doc','Счет'+CSTR(RECNO(имя формы))+'.doc',True)v0.04 OUTLOOKMAILSEND,THUNDERBIRDMAILSEND,MAILSEND - Отправка почты через Outlook, Thunderbird или автоматически определенный клиентом. Code: Выделить всё MAILSEND('user1@mail.com'+newline+'user2@mail.com', 'test', 'Приветствую. '+newline+'Тестовое письмо'+newline+'С уважением, автор.', 'C:\file1.txt'+newline+'C:\file2.txt'+newline+'file3.txt', false)OUTLOOKMAILSENDEX,THUNDERBIRDMAILSENDEX,MAILSENDEX - Расширенный режим отправки почты через Outlook, Thunderbird или автоматически определенный клиентом. Code: Выделить всё MAILSENDEX('user1@mail.com'+newline+'user2@mail.com', 'cc@mail.ru', 'bcc@mail.ru', 'test', 'Приветствую. '+newline+'Тестовое письмо'+newline+'С уважением, автор.', 'C:\file1.txt'+newline+'C:\file2.txt'+newline+'file3.txt', false)v0.05 - *REPORTSAVE - автоматическая подстановка расширения выходного файла и проверка существования файла шаблона. v0.06 - QUOTESL и QUOTES экранирование спецсимволов в тексте для надписи и html кода. Code: Выделить всё QUOTESL('ТОО "Рога & Копыта"') /* ТОО "Рога && Копыта" */v0.07 - *REPORTSAVE - используется штатный диалог вывода ошибок, всегда создавался файл '.doc' v0.08 - RAWURLENCODE - Кодирование строки в URL Code: Выделить всё RAWURLENCODE('Проверка!')9.04.2017Перезалил версию 0.08 v0.09 Изменен вызов ExpandFileName v0.10 Исправлена ошибка в выражении ObjectVisible v0.11 Добавлено выражение TIMESBETWEEN v0.12 Добавлены выражения DLGOPENFILE, DLGSAVEFILE - возвращают путь к файлу, DLGSELECTDIR - путь к каталогу Code: Выделить всё DLGOPENFILE('Выбирте файл',[Текст1],'D:\','Word|*.doc;*.docx')v0.13 Добавлены выражения SECONDSTOTIMESTR, MINUTESTOTIMESTR - количество секунд или минут конвертирует в строку времени. v0.14 Добавлены выражения SETMAINICONFILE, SETFORMICONFILE - Загрузка иконки в главного окна или в окно формы. v0.15 Добавлено выражение OBJECTENABLE - Функция для управления доступностью объектов. Совместно с YurAnt. v0.15.1 Исправлено дублирование IntToHex Актуальная версия (01.12.2018): |
neitri |
| 95 | Модуль ProgressBar для DataExpress | Реализация WINAPI ProgressBar для DataExpress. TProgressBar сделан на основе TParamList. Создание function PB_Create(Parent: TCustomControl): TProgressBar;Parent - TCustomControl в котором будет нарисован TProgressBar. ВНИМАНИЕ. TProgressBar нельзя создать до/во время создания окна (FormCreate/OnCreate), в котором ProgressBar будет размещен. Пример: Code: Выделить всё varУничтожение procedure PB_Destroy(var: TProgressBar);После уничтожения TProgressBar = nil. ВНИМАНИЕ. Уничтожать TProgressBar до уничтожения окна в котором он расположен. Пример: Code: Выделить всё varСвойства TProgressBar хранятся в параметре по умолчанию Values. Пример чтения свойства: Code: Выделить всё TProgressBar['Свойство']Пример записи свойства: Code: Выделить всё TProgressBar['Свойство'] := ЗначениеСписок свойств: Height: Integer - Высота Left: Integer - Расстояние слева MarqueeInterval: Integer - Время в миллисекундах между обновлениями анимации, при выбранном стиле pbstMarquee. Min: Integer - Минимальное позиция прогресса Max: Integer - Максимальная позиция прогресса Position: Integer - Текущая позиция прогресса State: TProgressBarState - Состояние TProgressBar, может принимать значения: pbsNormal, pbsError или pbsPaused.
Style: TProgressBarStyle - Может принимать значения pbstNormal или pbstMarquee.
Orientation: TOrientation - Ориентация продвижения TProgressBar, может принимать значения pbHorizontal или pbVertical.
Width: Integer - Ширина Аналог процедур TProgressBar, вызываются путем чтения и записи свойств. Процедуры без входных параметров:
Code: Выделить всё TProgressBar['StepIt']Процедуры с входными параметрами:
Code: Выделить всё TProgressBar['SetBounds'] := [10, 10, 180, 30]ProgressBar может не работать на некоторых версиях Windows. Демо |
Camellia |
| 96 | Модуль SMART | Автор: Admin Описание: добавляет несколько новых функций SMART_FocusColor - подсвечивает активное поле. Есть возможность задать цвет подсветки. SMART_SetFieldValue - устанавливает значение в указанном поле в тех записях формы, которые выбрал запрос. SMART_PivotToXls - Экспортирует сводную таблицу в Эксель. |
jurist23rus |
| 97 | Модуль y_module | y_module
Автор: YurAnt Версия: v0.4 Список функций: 1. KURS_UE - получает курс валют (евро, доллар) на указанную дату из сервиса центробанка (cbr.ru) Зависимость: плагин ds_inet.dll (будет дополняться новыми интернет-функциями. Пожелания приветствуются) По умолчанию "из коробки" функция ищет плагин в папке с программой. (external 'KursUE@ds_inet.dll';)
Для удобства путь можно изменить путь на свой (например ПапкаDX\lib) и указать его в epas - external 'KursUE@lib\ds_inet.dll'; 2. EKFOR [color=#808080](EnterKeyForOpenRec) Функция подменяет клавишу Space на Enter для открытия формы редактирования в режиме "Только таблица". Отдельная благодарность neitri и drts за активную помощь в создании функции[/color] 3. QR_CODE_GEN Функция генерирует QR-код из заданного текста и помещает в компонент "Изображение". Зависимости: интернет и доступность сервиса http://goqr.me/
Отдельная благодарность neitri за активную помощь в создании функции .
Скачать: 4. BtnMLCaption Функция позволяет установить произвольный многострочный текст для "Кнопки".
Содержимое комплекта:
ds_inet.dll KURS_UE_EXAMPLE.FDB --- 5. Клик - действие. Эмулирует клик левой кнопкой мыши на указанном компоненте. |
YurAnt |
| 98 | Модуль для работы с Telegram Bot API (Совместная разработка). | Ввиду закрытости проекта решил создать отдельную ветку. В данной теме приглашаю всех желающих (кодеров и не только) к совместному обсуждению и разработке расширения для работы с ботом Telegram через его API. Из за недостатка времени и недолгого знакомства с этими технологиями, пока сделал небольшой эскиз. Цель: создать полностью автономный отдельный модуль, исключительно с применением PascalScript и системных функций Windows без использования сторонних библиотек и "невидимых" vpn/прокси. На его базе планируется создать пользовательскую обертку, максимально доступную для понимания и максимально простого внедрения в проекты. Что сделано на сегодняшний день: 1. Подключение к сервису. Сделал асинхронный коннект с проверкой ответа в цикле, который не вешает программу. Прокси пока указывается вручную в параметре SetProxy. 2. Отправка сообщений боту, запрос информации о чате, запрос информации о боте (ответы пока в чистом json) Что требуется/планируется: 1. Придумать метод перебора прокси из списка. 2. Внедрить long polling запросы. 3. Написать функцию конвертер JSON Unicode для текста вида \u04030\u04a0\\\ (кириллица).Code: Выделить всё function ConvStr(const InText: string): string;4. На базе JSON-парсера разработать TG-фреймворк с набором функций из API для удобства доступа к объектам. 5. Разработка внутреннего API и пользовательской обертки. Коды: Code: Выделить всё typeCode: Выделить всё {$i koldev_jsonparser}Тестовая база Логика работы бота (работы бота Судя по данным от клиентов: как и предполагал, from.id и chat.id это уникальный идентификатор пользователя и переписки с ботом одновременно. Логику вижу примерно такую: 1. Пользователь отсылает боту любое сообщение, чтобы это не превратилось в "ddos атаку" бот это "терпит" попыток 20 30, потом "заваливает" пользователя по его id командой kickChatMember (на некоторое время или до 31.12.9999 г.)2. Для порядка программа на любой запрос незнакомого пользователя отвечает предложением выполнить команду /запрос на регистрацию3. Пользователь нажимает /запрос на регистрацию и пошел процесс "знакомства".4. После команды регистрации бот видит что пользователя с таким ID нет в "регистратуре" и "заводит на него новую карточку", туда же вносит %FirstName%, %LastName%, %WhoInThisLife% и так далее, но вся эта информация дополнительная, а главный ID. Именно по ID с у бота пользователем будет происходить общение весь срок "дружбы", независимо от устройства с которого тот выходит. После запроса на регистрацию при следующих повторных попытках бот также проверяет регистратуру и отвечает абону: "В курсе уже! Жди!" На этом "прелюдия" завершена. Далее процесс может продолжить только Великий Админ, который ведет пользователей базы. Он открывает форму, с названием, скажем "запросы на регистрацию", видит запись с новым запросом и ставит свой резолюшн в виде галочки "разрешить дружбу". Регистрация завершена. В дальнейшем пользователь может общаться с ботом в рамках выданных ему прав, но об этом позже. Удаление пользователя может происходить двумя способами: 1. Админ устанавливает флажок "удален" и флаг "разрешить дружбу" снимается. Это можно пригодиться в том случае, когда желательно сохранить данные для (возможного) последующего использования. 2. Физическое удаление записи с пользователем, если его данные более не требуются. В обоих случаях опционально можно применить правило "анти ddos", описанное выше. Возможные проблемы и варианты их решения: Да, такое бывает. В этом случае бот (если он обучен работать с записями и таблицами бд) при обращении к базе получит отворот и дальше неизвестно чем все закончится. То есть при условиях, что база сетевая + запрос отправленный боту связан с обращением к базе + база отвалилась, прежде всего он должен попробовать ее опросить и в случае отказа, вернуть ошибку подключения и возможно предпринять какие то действия по спасению ситуации.Если база сетевая: Code: Выделить всё if (GetCurrentDatabase[2] <> ':') thenПробуем проверить соединение запросом чего нибудь от сервера: Code: Выделить всё function CheckDBConnect:boolean;Если коннект оказался успешным, продолжаем штатную работу, иначе Code: Выделить всё ShellExecute('open', Application.ExeName, GetCurrentDatabase (+ параметры), '',10)и "убить себя" Application.Terminate, предварительно отправив клиенту "предсмертную записку" с сообщением о попытке "реинкарнации" в "новом теле".Конечно такой способ прокатит, только если бот полностью автоматически стартует при запуске иначе после самоубийства он просто попадет в преисподнюю. Если бот стартует в другом запущенном экземпляре программы, то соответственно у него начнется "раздвоение личности": ![]() |
Гocть |
| 99 | Модуль напоминаний о событиях | Решил поделиться своим творением, писал для своих нужд. Сразу оговорюсь, на гуру программирования я не тяну, поэтому тапками не бить, а советам буду рад. Итак, Данное расширение подключается в действиях при запуске, предварительно нужно создать форму для хранения напоминаний (пример на скрине). В выражениях добавятся соответствующие функции, для добавления напоминаний через выражения. В версии 2.2 добавлен еще один параметр (предпоследний, если по порядку). это параметр "user" если передать в него пустую строку, то функционал расширения не изменится от предыдущей версии. А если в него передать имя юзера, то оно запишится в напоминание. Обратите внимание, что в расширении отсутствует проверка, на наличие указанного пользавателя, т.е. если указать не существующее имя пользавателя, то напоминание не сработает никогда. 31.05.2023 Reminder v3.0 - исправил конфликт с другими расширениями, при старте программы. Также оптимизировал процедуру обновления уведомлений (создавалось много лишних экземпляров формы) 01.06.2023 Reminder v3.1 - Исправил ошибку неопределенного поля цикличных событий. 28.05.2024 Reminder v3.2 - Исправил редактирование записи, при установленном фильтре формы. |
Vofka18 |
| 100 | Модуль отправки смс-сообщений через API для сервиса SMS.RU | Переделан "Универсальный модуль для HTTP запросов (GET, POST, DELETE) (SendHttpRequest)" https://forum.mydataexpress.ru/viewtopic.php?f=16&t=5323&hilit=HTTP для отправки СМС сообщений через сервис SMS.Ru Необходима регистрация на сайте SMS.RU https://sms.ru |
xxDeMoXxx |
| 101 | Модуль форматирования полей "Число" и "Дата" | Последняя версия: 2.2 от 31.08.18 г. Модуль служит для организации визуального форматирования чисел в полях типа «Число» и упрощения ввода данных в поля «Дата». РЕПОЗИТОРИЙ |
jurist23rus |
| 102 | Модуль Чекко | Модуль для получения данных о компании и ИП с сервиса Чекко. Аналог DaData. В данный версии модуля только это реализовано. https://checko.ru/ Пример запроса данных: вместо <API-key> нужно вставить собственный ключ, который можно получить в личном кабинете сайта. Code: Выделить всё iif(CHECKO_FIRM_GET('<API-key>', [ИНН]) = 'По запросу ничего не найдено',Пример получения полного наименования компании: Code: Выделить всё iif(nz(getvar('checko.data.ИНН'), '') = [ИНН],Данные хранятся в переменных, до знака = это имя переменной, а после знака = его значение. Получить данные через GetVar('checko.data.Статус.Код') Все получаемые данный можно найти по ссылкам По компании: https://checko.ru/integration/api/company По ИП: https://checko.ru/integration/api/entrepreneur Модуль: |
shavkat |
| 103 | Мультивыгрузка файлов | MultiFileDownload Автор: Pozharskiy1991 Описание Расширение позволяет пакетно выгружать все файлы из выбранного поля запроса в указанную папку. Автоматически обрабатывает дубликаты и сортирует файлы по расширениям в отдельные подпапки. Возможности
Как это работает
Настройка
Настройте дополнительные параметры:
Примечания
Известные ограничения
|
Pozharskiy1991 |
| 104 | Нажимаем нужную кнопку запроса | Довольно простой, но меня выручает во многих ситуациях. Раньше этот скрипт обсуждался уже. Сейчас допилил под свои нужды. Может быть кому-то пригодиться. Code: Выделить всё {@action |
SirWolf |
| 105 | Настройка панели кнопок в главном окне | Действие запуска. Позволяет выполнить кастомные настройки панели кнопок главного окна программы. ![]() Возможности и опции текущей версии: Опция позволяет изменить размер иконок до размера, указанного в списке. ![]() Устанавливает внутренний отступ от иконки до края кнопки и в сумме с размером иконки определяет итоговый размер кнопки на панели. (Т.е расчет: иконка = 16px + отступ = 4px (*2) = 24px) ![]() Скрывает кнопки навигации для всех форм, кроме "Только форма" (т.к. в этом режиме они логически необходимы) ![]() Перемещает панель кнопок в форму. Примерный вид: ![]() Устанавливает фоновый цвет панели. Доступны цвета:
![]() При включенной опции панель кнопок очерчивается границей по периметру. ![]() Опция позволяет указать путь к папке с иконками. (При указании каталога - игнорируются встроенные иконки и папка должна содержать весь набор!) Имена иконок должны соответствовать определенным индексам (пример набора иконок в приложенном архиве). Рекомендуется устанавливать размер иконок соответствующим разрешению либо кратным числу 2 (например иконки размером 32px желательно уменьшать до 16, а иконки 48px - до 24 или 12px соответственно). ![]() Примечание: панель кнопок в режиме "Простая форма" при подключенном расширении скрывается и опция "показать" отсутствует за ненадобностью... В следующих версиях: - Встроенные наборы иконок. - Установка собственных иконок из файла - Кнопка "Скопировать" - (может быть) Управление видом фильтра при его изменении, кнопка сброса фильтра --- Пожелания, предложения? |
Develop-Soft |
| 106 | Обновление текущей формы | Добавляет в расширение DX PLUS действие для кнопки - обновление текущей формы. |
VdoVin |
| 107 | Обработка массивов | Модуль обработки текстовых массивов. Функции: A_ROUNDTO выполняет округление числа (текстового массива чисел, с разделителем ";") до указанного количества знаков после запятой. A_DATE выполняет преобразование даты (текстового массива дат, разделенных точкой с запятой ";") вида 2018-11-27 в 27.11.2018 ![]() Обе функции рекомендуются для обработки данных запроса, полученных методом "Соединить" и "Соединить все" (создается вычисляемое поле, в нем применяется функция, реальное поле скрывается в настройках). Пример использования Скачать: |
Гocть |
| 108 | Округление в большую сторону | Маленькое расширение. Добавляет функцию округления с тремя вариантами: вверх, вниз и по математике. Можно подключать, как внешний модуль и использовать в своих скриптах. |
Megabyte |
| 109 | Онлайн переводчик | Доброго вечера! Наткнулся на интересный сервис перевода, сделал под него расширение. Пользуйтесь! |
Runenkov |
| 110 | Открыть ссылку на сайт в настольной и веб-версии | Сделал небольшое расширение - действие для кнопки, которое открывает ссылку на сайт. но надо доработать переход в веб-версии, потому что открывается ссылка в этой же вкладке |
cordek |
| 111 | Открыть форму запроса (контекстное меню) | Расширение позволяет открывать формы запроса если в запрос можно вывести ID записи формы. Действие формы создает кнопку в контекстном меню запроса для открытия указанной формы с возможность задания условия видимости и доступа кнопки. Также можно назначить открытие формы по двойному клику. Описание и пример действия: Пример отображения в контекстном меню: Файл с расширением: |
shavkat |
| 112 | Отправка письма на e-mail | Расширение для отправки письма на e-mail. По введенным параметрам создается и запускается скрипт отправки на PowerShell. Возможности: - отправлять нескольким получателям и отдельная отправка. - указание получателей копии и скрытой копии. - отправка нескольких вложенных файлов с последующим удалением. - вывод прогресса в консоли PowerShell и вывод окна ожидания. Полное описание действия: Расширение: |
shavkat |
| 113 | Отрицательные числа красным цветом | Действие формы. Устанавливает для всех числовых полей текущей формы (родительской или подчиненной) условное форматирование: "отрицательные числа красным шрифтом". Раскраска при использовании этого модуля работать НЕ будет! версия с исправлением от 27.08.2018 |
Гocть |
| 114 | Очень простые расширения от Kiss'a | Управление компонентом "Закладки" на форме. - (группа: Компоненты форм) TabVis - Скрывает Закладку, если условие ЛОЖЬ, Показывает обратно, если условие ИСТИНА Параметр 1 - Текст - Имя компонента (конкретной закладки) Параметр 2 - Условие TabVis('dxTabSheet1',[Число]=1)- TabAct - Активирует Закладку, если условие ИСТИНА Параметр 1 - Текст - Имя компонента "Закладки" Параметр 2 - Текст - Имя компонента (конкретной закладки) Параметр 3 - Условие TabAct('dxPageControl1','dxTabSheet1',[Число]=1)- Генератор случайных чисел. - (группа: Математика) Rand - Возвращает случайное число Параметр 1 - Число - От Параметр 2 - Число - До Rand(1,10)- Извлекает из пути к файлу его расширение. - (группа: Текст) FExt - Возвращает расширение файла Параметр 1 - Текст - Путь к файлу FExt('D:\Моя.любимая_песя.mp3')Результат - текст - .mp3 - ЗЫ. Все эти функции просто выведены из движка без наворотов и проверок. Я не мастер писать скрипты (извинити-простити), но эти расширялки как-то пригодились и до сих пор работают)) Может пригодятся еще кому-нибудь. |
Kiss |
| 115 | Очистка фильтра формы по нажатию кнопки | Действие (action) - очистка фильтра формы по нажатию кнопки Автор: drts Версия: 1.0 от 12.03.2018 г. Добавляет действие в группу поиск и фильтрация, позволяющее очистить все установленные фильтры в форме (включая дочерние) |
drts |
| 116 | Перевод времени в миллисекунды | Недавно нужно было решить нестандартную задачу, связанную с спортивными соревнованиями. Была написана такая функция, для перевода строки формата "00:00:00.00 в миллисекунды. |
SirWolf |
| 117 | Переворот строки | Простая функция, которая переворачивает строку слева направо, единственная особенность, то что она написана ChatGPT Думаю, это может открыть дополнительные возможности, тем кто не умеет в программирование, а хочется писать что то эдакое. |
rausNT |
| 118 | Периодический нумератор | Действие формы. Нумератор с настраиваемыми параметрами в пределах: Год; Квартал; Месяц; Неделя; День или сквозная нумерация (также срабатывает, если не указана дата). Имеется опция блокировки полей "Номер" и "Дата" (защита от изменений и ввода "задним числом") |
Develop-Soft |
| 119 | Печать с постобработкой (на основе готового расширения от Dataexpress) | Расширение сделано на основе: https://forum.mydataexpress.ru/viewtopic.php?f=16&t=3598 Механизм объединения скопирован из исходного расширения. Действие кнопки, позволяет сформировать документ и провести объединение ячеек. Отличие от исходного в том, что расширение не подключается при печати, а печать и постобработка происходит сразу. Word 2021 некорректно работал с исходным расширением. |
Megabyte |
| 120 | Плоское файловое хранилище (filestore2) | Является альтернативой "Хранилища файлов". Отличается плоской структурой хранения, один файл - одна запись. Для получения списка файлов, надо делать запрос. Пример во вложении. Служит для группового или одиночного добавления файлов в базу данных. Открывает окно выбора файлов для загрузки в базу. Выбранные файлы добавляются в базу данных и находятся в форме FileStore2 (во вложенном примере). Можно использовать после действия альтернативная печать, прописав result в выражении "Путь к файлу" Дополнительно действие ищет электронную подпись. Если подписать файл открепляемой электронной подписью, то формируется файл "имя файла.расширение".sig, если такой файл есть, действие подгрузит его в отдельное поле и поставит галочку "Подписано" (смотрите пример формы FileStore2) |
cordek |
| 121 | Поиск и отображение дубликатов записей | Находит и показывает дубликаты записей (повторяющиеся записи) на форме. В настройках кнопки нужно выбрать поле, по которому будет происходить поиск. | jurist23rus |
| 122 | Поиск по всем полям во всех формах | ![]() Возможности: 1) фильтр по всем видимым в Grid формы полям (выбрать поля для поиска или для исключения из поиска можно в "действия формы" ) 2) значения фильтра формы учитываются 3) ESC-очистить поле поиска, Ctrl+F в grid формы-фокус в окно поиска 4) сохранение истории поиска для каждой формы отдельно 5) нажатие правой кнопкой мышки на "X" - сброс фильтра формы и поиск 6) настройка задержки старта поиска после ввода (актуально при больших объемах информации или медленном соединении с базой) 7) кнопка вниз на поле поиска - переход на grid формы, кнопка вверх в grid формы при выделенной первой строке - переход в поле поиска 8) на простой форме: значения поиска записывается в переменную kok80.QueryFilter (название переменной можно задать в настройках), форма обновляется. Пример использования в фильтре запроса на простой форме: [?!адрес]==GetVar("kok80.QueryFilter") 9) Поиск в окне списка объекта 10) Поиск в запросах Установка: после импорта модуля выполнить: дизайнер - действия при запуске - вставить действие - поиск Известные ошибки/недоработки: - в дереве при выборе неверхней node отображает пустой результат поиска ps здесь всегда ссылка на последнюю версию: kok80-poisk3.00.zip [ ................................ Демо Замечания, предложения ? ... |
kok80 |
| 123 | Постпечатная обработка в Word | Модуль позволяет выполнять дополнительную обработку сформированного в процессе печати документа Word. Для обработки документа программа подключается к открытому документу по технологии OLE. Для работы модуля необходим установленный Microsoft Word. От вас требуется только подключить действие формы и настроить параметры, все остальное сделает за вас программа. 1. Объединить одинаковые ячейки в Word - действие формы. Объединяет ячейки с одинаковым текстом по вертикали. Объединение может зависеть от соседних ячеек в строке или быть независимым. В параметрах указываете идентификатор таблицы - любое слово или символ в первой ячейке таблицы. Идентификатор должен располагаться перед основным текстом ячейки и отделяться пробелом. Все таблицы с данным идентификатором будут обработаны. Также в параметрах указываются номера столбцов, в которых будут объединятся ячейки. Более подробную информацию о настройке вы можете прочитать в редакторе действий. |
admin |
| 124 | Прибавление рабочих дней | Сделал функцию, которая ищет дату через n-рабочих дней Для работы нужно создать форму calendar, в которой будут выходные дни. данные скачивал отсюда https://xmlcalendar.ru/index.php?country=ru В примере указано как загружать из csv Пример Расширение Данные с выходными днями В этой теме постараюсь выкладывать соответствующие файлы с выходными днями на каждый год. |
cordek |
| 125 | Приложение "DX Модули" | Это отдельное приложение, основная цель которого собрать все модули в одном месте для удобства их использования и поддержки. Возможности: - установка, удаление и обновление модулей для вашей базы данных, парой кликов мыши. - тут же можно почитать описание модуля или перейти на страницу модуля (как правило, это форум) - разработчики модулей могут достаточно легко добавлять новые модули или их новые версии в программу - для добавления (обновления) модуля нужна простая регистрация (только адрес электронной почты и любой логин) - это сделано, чтобы контролировать манипуляции с модулями. Пользовательская работа с модулями (установка, обновление, удаление) не требует никаких регистраций. - любой модуль должен содержать раздел {@module ... @} - для идентификации модуля нужно указывать его ModuleID (это обычный GUID) в разделе {@module ... @}; Например: Code: Выделить всё {@moduleТолько для Windows, от Vista и выше. Для установки нужно перейти по ссылке и следовать инструкциям. - установка корректно работает только из штатных браузеров Windows (Internet Explorer, Edge). (В Opera точно будет ошибка, в остальных не проверял) - при установке будет дополнительно поставлен Net Framework 4.7.2, иначе работать не будет. - запуск через ярлык на рабочем столе или в меню пуск; - удаление через системную утилиту "Установка и удаление программ". |
jurist23rus |
| 126 | Проверка в чем работает пользователь, веб-сервер или настольное приложение | Для удобства кастомизации интерфейса сделал функцию WEBVIEW функция возвращает true или false в зависимости от того открыта база через веб-сервер или нет. Может пригодиться для настройки разных интерфейсов форм с помощью действия Видимость компонентов по условию. Если выводим надпись, то код такой Code: Выделить всё IIF(WEBVIEW, 'Веб-сервер', 'Настолка')Если используем действие Видимость компонентов по условию, то просто пишем в условии WEBVIEW |
cordek |
| 127 | Проигрывание звука и озвучивание текста Windows | Расширение «Мультимедиа»: Фоновый звук (WAV) и Синтез речи (SAPI) Предлагаю простенькое готовое расширение для DataExpress, которое добавляет две функции для взаимодействия с пользователем с помощью звуков и голоса. Обе функции работают в фоновом режиме (асинхронно) — программа не подвисает во время воспроизведения, и пользователь может сразу продолжать работу. Основные фишки модуля:
Как использовать в проекте: После добавления расширения функции появятся в Дизайнере выражений в группе «Мультимедиа». Их можно использовать в действиях кнопок без написания кода формы или вызывать по условию. Примеры вызовов: Code: Выделить всё // Проиграть файл ding.wav из папки tools, которая лежит рядом с DataExpress.exeКод расширения: Code: Выделить всё {@module |
mobmk |
| 128 | Пропорциональное распределение суммы по таблице | Данное расширение распределяет заданную сумму, пропорционально суммам таблицы. Может прибавлять и отнимать долю, от текущего значения таблицы. Применяется для пропорционального распределения скидки или наценки на товар. Результат вычисления можно выводить в отдельное поле таблицы, либо взаимодействовать с полем суммы например сразу прибавлять или отнимать значение. На что нужно обратить внимание: - Числовые поля должны быть достаточной точности (кол-во знаков после запятой). - Если поле перезаписывается, с функцией прибавить или отнять, то предусмотреть повторное нажатие кнопки.(например используя флажок "Скидка предоставлена"). Функция подключается к действиям кнопки, раздел "Инструменты". 22.05.2023 - Мелкие правки, прокоментировал код. |
Vofka18 |
| 129 | Просмотр данных в браузере | Модуль позволяет просматривать данные в браузере на любом устройстве. Состоит из двух действий при запуске. 1. Запуск веб-сервера. Действие запускает веб-сервер, обеспечивает работу остальных действий модуля, отображает стартовую страницу. Стартовая страница содержит ссылки на отображаемые в браузере запросы. Порт - порт, используемый веб-сервером. По умолчанию 80. Убедитесь, что порт разрешен брандмауэром. Стартовая страница - произвольный текст, который должен быть введен в адресной строке браузера для доступа к странице. Например, если значение равно: /MyData/index.html, то адрес может выглядеть так: http://127.0.0.1/MyData/index.html. Заголовок отображается на стартовой странице. 2. Просмотр запроса в браузере на мобильном устройстве. Расширение позволяет просматривать данные запроса в браузере. Страницы адаптированы для просмотра на мобильном устройстве: смартфоне или планшете. Данные отображаются в открытой части и закрытой (в подробностях). Чтобы посмотреть подробности, коснитесь изображения глаза. Если дважды тапнуть по экрану, появится панель итогов и кнопки для доступа к фильтру и перехода на стартовую страницу. Если повторить действие, то панель и кнопки исчезнут. Чтобы отфильтровать данные, нажмите кнопку фильтра. Введите параметры и нажмите кнопку "Применить". Вместо разделителей даты, времени и дробной части числа можно вводить пробел. При первом обращении к странице создается сессия. Если в течении 15 минут не было обращений к серверу, то сессия закрывается. При следующем открытии сессии фильтр будет иметь значения по умолчанию. Путь - произвольная строка, которая вводится в адресной строке браузера для доступа к запросу. К примеру если значение равно: mydata, то строка в браузере может выглядеть так: http://127.0.0.1/mydata. Путь не должен содержать вопросительный знак. Форма - форма, где расположен запрос. Запрос - запрос, данные которого будут отображены в браузере. Максимальное количество записей - число записей, отображаемых в браузере. Если фактическое количество записей больше, то в конце списка будет соответствующая надпись. Поля запроса - поля запроса, отображаемые в видимой части. Поля в подробностях - поля запроса, отображаемые в скрытой части. Поля итогов - поля формы, значения которых будут показаны, если дважды тапнуть по экрану. Поля фильтра - поля формы, используемые для фильтрации запроса и отображаемое на странице фильтра. Обязательное - поле фильтра может быть обязательное для ввода. ![]() 1.1 - внесены правки для совместимости с DataExpress от 31.03.2019. 1.0 - первая версия |
admin |
| 130 | Работа с закладками | Несколько расширений для работы с закладками. - Применяется на форму, позволяет скрыть панель с закладками. - Применяется на кнопку, позволяя назначить нужную закладку. |
SirWolf |
| 131 | Работа с произвольным SQL запросом в таблице | Вот здесь находится расширение Отрисовка произвольного SQL запроса SQL отрисовка произвольного запроса Однако бывает необходимость подредактировать данные SQL запроса, а также распечатать. Хорошим вариантом, было бы запись результатов в таблица (dxGrid), чтобы можно было как редактировать, так и печатать стандартными средствами. Моих сил пока хватило только на явную запись значений в поле таблицы. То есть взял поле таблицы table['1'], записал в него sql.field[1] и так далее/ Явно это не то, чего хотелось бы. Желательно было бы создавать поля и записывать автоматически. |
cordek |
| 132 | Работа с регистрами | 1. Копировать в регистр Расширение копирует данные формы и ее подчиненные данные в другую форму, называемую регистром. Это позволяет решать некоторые задачи, в которых имеется три уровня подчиненности данных: Операция->Изделие->Комплектующее, Меню->Блюдо->Продукты, Операция->Услуги->Работы, материалы и т. д. Возможности запросов ограничены, они могут извлекать данные только из двух уровней подчиненности: формы и таблицы. Но если в таблице есть объекты, которые имеют какой-то состав (например, изделие состоит из комплектующих), то запрос не может получить этот состав. Для этого приходилось связывать формы запросами и использовать свойство объекта "Заполнить таблицу". Вместо этого можно просто копировать нужные для анализа данные в отдельную форму и использовать простые запросы для получения результатов. При этом интерфейс программы заметно упростится, т. к. будет избавлен от лишних элементов. 2. Записать в регистр остатков Реализация хранения итогов в форме, называемой регистром остатков. С помощью этого действия вы сможете, к примеру, вычислять остатки товаров на текущий момент. Это альтернатива вычислению остатков с помощью запроса. Запросу приходится каждый раз просматривать таблицы, чтобы вычислить остатки. Если данных много, это может занимать некоторое время. В регистре остатки уже рассчитаны и их получение происходит практически мгновенно. Расчет остатков происходит при сохранении и удалении записей. Действие ищет в регистре соответствующую запись и меняет в ней числовое поле: увеличивает или уменьшает значение в зависимости от выбранной операции. Если запись не найдена, то она добавляется. Действие может предупреждать об отрицательных остатках. Предупреждение отображается в окне вывода. |
admin |
| 133 | Раскраска выбранным цветом | 1. Действие формы "Выбрать цвет из списка". Добавляется возможность выбрать цвет из списка. В табличной части формы цвет отображается в ячейке или окрашивается вся строка. 2. Действие формы "Раскрасить запрос". Отображение выбранных цветов в запросе. |
admin |
| 134 | Раскраска компонентов по условию | Надеюсь многим будет полезно расширение. Возможно некоторые будут рады так же как я |
xxDeMoXxx |
| 135 | Распознавание документов (Doc Recognizer) | Позволяет пользователю упростить задачу внесения сведений в базу данных, путём распознавания сканов (фотографий) документов. Модуль знает несколько шаблонных документов, например, паспорт или водительское удостоверение (список постоянно дополняется), в которых он самостоятельно находит нужные сведения и записывает их базу данных. Для документов с фотографией, (например, паспорт) возможна обрезка фото и вставка его в поле формы «Изображение». С последним обновлением можно распознавать любой документ и выбирать из него именованные сущности (даты, адреса, наименования, людей, всякие реквизиты типа ИНН и прочее). Короткое демонстрационное видео Скачать само расширение и демонстрационную базу данных, ознакомиться с документацией WIKI Сервис закрыт для общего пользования. Те кто хочет продолжить пользоваться обращайтесь в личку или на почту mail@dataexpress.wiki. |
jurist23rus |
| 136 | Расчетная форма | Реализация функционала, как в этом видео. Есть некая форма, в которой пользователь свободно редактирует какие-то параметры (например работы/услуги) и в таблице считается итог. | admin |
| 137 | Расширение "Управление окном списка объекта" | Доброго времени суток! Данное расширение позволяет управлять окном списка объекта. В расширении задаются видимые поля в окне списка, а также нужная сортировка. |
dm2002_2002 |
| 138 | Расширение Label в стиль ссылки + выражение при клике | Расширение формы. Подсвечивает список Label в стиль ссылки голубым цветом, выводит подчеркивание и изменение цвета при наведении. Возможность прикрепить выражение при клике. Если есть уже прикрепленные скрипты к данной лейбе они будут выполнены. Третий параметр указывает выполнять сначала скрипт или выражение в расширении. Обновлена версия 1.1: исправлена ошибка при многоразовом закрытии открытии набора данных и одновременном вызове формы в разных окнах. В комплект к данному расширению добавлю функцию Переход на форму (из любого типа ViewType), в комплекте может быть создано полноценное меню на форме. |
Иван |
| 139 | Расширение Main сброс подвисшей записи | Расширение Main. Снимает блокировку записи из таблицы dx_lock если на нее переходит тот же пользователь или запись в режиме блокировки более 15 минут и на нее переходит какой либо пользователь. | Иван |
| 140 | Расширение SQL Tree + календарь | Добрый день. Пишу расширение меню поиска методом формирования SQL запроса со всеми параметрами, для случая больших БД (добавление всевозможных фильтров, полей поиска, чекбоксов, деревьев групп и т.д.). Есть ошибка которую никак не могу отловить. Если на форме "календарь" открыть один раз форму то все хорошо. При повторном открытии возникает ошибка, скрин прикрепил. Ошибка возникает если установлена галочка для создания деревьев групп. Если только календарь создавать то ошибки нет. Возможно подскажете где искать. В базу было добавлено 500 тыс. записей для проверки скорости работы потому добавляю ссылкой на дропбокс. По ссылке рабочий вариант расширения на демо базе уже без ошибок. Как нормально описание сделаю выложу отдельно. Пока что на примере думаю кому нужно разберутся. ..................................................................... Обновлена версия модуля в примере от 15.04.2020 (совместим с пред версией, можно просто заменить текст скрипта и заполнить те поля что появились (добавлено возможность выбора полей в таблице, ранее они должны были быть таким же названием что и поле источник и их не выбирали)) https://www.dropbox.com/s/oid8dhv0fa9me ... O.rar?dl=0 Добавлено дополнительные возможности фильтрации (в SQL прописывая дополнительный фильтр для полей сравнений), исправлено ошибки, ускорена работа, добавлено детальное описание большинства пунктов. |
Иван |
| 141 | Расширение активен один чекбокс списка | Выбираете список чекбоксов. Кликая на один из них другие будет занулять. Если указано Один всегда активен и установлен флажок во втором параметре одного из чекбоксов списка то если убрать галочки со всех чекбоксов он становится активным и не доступным для клика пока не будет выбран один из других чекбоксов. Версия 1.1: исправлено совместимость с модулем видимость и доступность. |
Иван |
| 142 | Расширение всплывающее окно настроек формы | Всплывающее окно настроек. Выбираете надпись/кнопку при клике на которую будет всплывать окно настроек содержащее выбранный TdxGroupBox. Если указать "Высота формы равна TdxGroupBox.Top + 50" как true при показе окна формы ее размер будет уменьшен по верхней грани группы TdxGroupBox (актуально если размещаем группу внизу формы под всеми элементами). При нажатии на кнопку/надпись TdxGroupBox будет показывать на всплывающем окне. Версия 1.1: Исправлены ошибки. Версия 1.4: Исправлены ошибки. Добавлена совместимость с расширением обновления запросов на закладках Блокировка доступа к настройкам можно снять: 1. установить влажок не использовать блокировку в настройках самого расширения. 2. задано глобальный парамс MainWindow.Params['Открывать настройки'] истина. 3. задан локальный парамс формы self.Params['Открывать настройки'] истина. 4. указано выражение в настройках расширения и оно равно истина. |
Иван |
| 143 | Расширение генератор штрихкода и QR-кода | Расширение для кнопки. Создан на основе библиотеки что поддерживает все типы штрихкода zint_win32_2.8.0. Расширение работает автономно. Код написан по примеру функции "Генератор QR-кода offline". Добавлено ряд настроек внешнего вида. При первом запуске будет создана утилита [Каталог-DataExpress]\ext\Barcode\BarcodeZint.exe. В процессе генерации изображения будет создан временный файл картинки в папке temp пользователя Windows. После его загрузки в базу он будет удален. В зависимости от настроек генерирует необходимый формат штрихкода. Несколько основных уже прописаны в выборе списка при настройке (если ничего не выбирать будет генерировать CODE 128). Другой тип (помимо тех что уже прописаны в настройки расширения) можно прописать в кастумном поле2 числом, посмотрев номер отвечающий нужному типу (добавлено в описание расширения). Версия 1.2 - исправлено дублирование штрихкода в случае размещения на одной форме несколько картинок и кнопок с подключенным расширением. Версия 1.3 - исправлена ошибка возможности настройки расширения после обновления версии ДХ. Версия 1.4 - исправлена ошибка создания кастумных типов штрихкодов. Demo https://www.dropbox.com/s/4ja6ihx22uu7b5i/DEMO_Barcode.FDB?dl=0 |
Иван |
| 144 | Расширение для работы с виртуальными таблицами | Всем доброго времени суток. Данное расширение (представленного в демо), еще не закончено и не доработано, поэтому не спешите его добавлять к работающим проектам БД. Выкладываю его, в большей части, на правах обсуждения, решения, которое в нем применено. Т.к. чем дольше я его разрабатывал, тем больше сомнений меня посещало(а будет ли польза? а не будет ли вреда? и в целом имеет ли смысл?). Ну теперь к сути. Данное расширение подключается в действии при запуске. После чего появится кнопка в панели инструментов (или также настройки можно отобразить через подключение к обычной кнопке). Далее можно перейти к настройкам. В окне настроек есть поле для ввода SQL запроса(синтаксис толко SQL). В это поле можно ввести любой запрос, или можно скопировать текст запроса из готовых на форме(выбрать форму->выбрать запрос). Далее выполняем запрос, заполняем данные в таблице справа, и нажимаем сохранить таблицу. Будет создана виртуальная таблица(далее ВТ) в базе данных. Вот тут я не совсем компетентен... Как это понял я: Виртуальные таблицы, это таблицы с "постоянно открытым набором данных". При внесении изменений в формах, которые участвуют в отборе для ВТ, данные в ВТ меняются автоматически (на стороне сервера), т.е. в ней данные всегда актуальны, чем я и подкупился... Взаимодействовать с ВТ можно через SQLExecute. Само же расширение позволяет написать запрос для получения значения для каждого поля ВТ, и далее в выражении можно использовать функцию GETVAL_VT, в которую нужно передать определенные параметры(там есть описание), и на их основании будет сформирован запрос к ВТ и получен результат. Собственно вопрос к знатокам и не только: 1) Не будет ли больше вреда чем пользы от такого подхода? 2) Может я где-то не с той стороны зашел (прислушаюсь к советам, по изменению логики работы). 3) Хотелось бы услышать мнение, стоит ли его далее кодить? Найдется ли ему практическое применение? А то я уже если честно сомневаюсь... Ну и в завершении хочу отметить, что ВТ не удаляются из БД после перезапуска, поэтому если надо удалить расширение, следуйте инструкции в кнопке на панели инструментов. |
Vofka18 |
| 145 | Расширение для хранения файлов | Расширение не претендует на профессиональное, т.к. по факту хранит файлы в папках на диске, поэтому их может быть очень много... Но предусмотрены функции очистки и архивирования файлов. И в дальнейшем чтобы восстановить файлы, нужно просто распаковать архив в папку хранилища. Данное расширение, позволяет прикреплять к форме любые файлы. Файлы хранятся только на диске в указаной папке. В первую очередь нужно подключить действие "При запуске", оно является действием настроек, далее нужно подключить соответствующие действия (действия формы) в формах (к которым планируете прикреплять файлы), и кнопках(для экспорта файлов) если необходимо. Также добавятся некоторые функции в выражениях, для работы с данным расширением. Поддерживается "перетягивание файлов на форму". В принципе в нем нет ничего особенного, по факту просто аналог ctrl-C/ctrl-V, в более удобном представлении. Тестирую данное расширение пару месяцев, но досконально все функции еще не проверил (их много получилось). В целом в расширении старался максимально подробно все прокомментировать в описаниях функций. Если будут проблемы в работе , постараюсь их оперативно исправить. Обновил файл расширения, исправил несоответствия настроек при экспорте файлов через отдельную кнопку. |
Vofka18 |
| 146 | Расширение замена закладок на ссылки | Скрывает группу закладок создавая на месте закладок ссылки. | Иван |
| 147 | Расширение заставка | Доброго времени суток! Пример того, как можно сделать заставку к своей базе. |
dm2002_2002 |
| 148 | Расширение Меню компонента + регистр радиокнопок + видимость и доступность | Расширение для создания выпадающего меню для любого компонента формы из произвольным уровнем вложенности. Работает в любом типе FormView. Основные возможности: создать кнопки и радиокнопки. Добавление картинок из галереи. Записать выражение при клике на кнопку или изменении значения радио кнопки. Возможно добавить быстрые клавиши (если для двух меню на одной форме выбрать одинаковую комбинацию будет выполнена первая в списке). Чекбокс "Скрипт" - выполнить скрипт или действие что уже прикреплено, иначе будет занулено. Актуально если прописываем название уже существующей в меню кнопки. Если заполнить все поля после таблиц "регистр", значения радиокнопок будет сохранятся в регистр для конкретного пользователя и при открытии формы их подставлять. При изменении значений радио кнопок значения будут перезаписаны в регистре. Версия 1.1: исправлена ошибка кастумной сортировки. Версия 1.2: - добавлено возможность создать меню радиокнопок соответствующих столбикам запросов или таблиц, включать или отключать их видимость переключая радиокнопку (чекбокс: добавить в меню видимость колонок по значению радиокнопки.). - значения видимости пишет регистр. - в меню добавляет только те пункты меню что по умолчанию оставлены видимыми при настройке. - видимость кнопок меню по значения выражения. Работает только на запросах. - к видимости и доступности компонентов формы по значению радиокнопки добавлено Только чтение. Версия 1.3: - исправлена ошибка совместимости. |
Иван |
| 149 | Расширение обновление запросов при переходе на закладку | Расширение формы. Что бы ускорить открытие формы запросы на вкладках ставите в ручное обновление (кроме первой на которой будет открывать по умолчанию). Расширение обновляет запросы на активной закладке при переходе. Можно выбрать отображать анимацию обновления или нет. Если на закладке несколько запросов анимация будет показана на одном запросе. Версия 1.4: исправлена ошибка при многоразовом закрытии открытии набора данных и одновременном вызове формы в разных окнах. Ускорена работа. Обновляет все запросы на закладке. Версия 1.5: добавлено возможность работы на простой форме. При переходе по записям в режиме таблица + форма активна первая закладка. Картинки декодирует из строки один раз при первом обновлении. Версия 1.6: исправлена ошибка обработчика OnStateChange. Версия 1.7:Обновляет все запросы где установлено ручное обновление (на активных закладках) в асинхронном режиме по таймеру. Так же работает для групп закладок на закладках в неограниченной вложенности. Для разработчиков: Если используете расширение где запрос на закладке размещен на кастумном TWindow то родителя self для TWindow нужно в расширении записать в параметр MyTWindow.Params.objects['parent_form']:= QT.selfT; (Пример в расширении Настройки CustomizationLbl 1.4) |
Иван |
| 150 | Расширение окно просмотра | Доброго времени суток! Расширение позволяет просматривать при нажатии клавиш Shift+F2 значения поля в отдельном окне. Если форма находится в режиме редактирования или новой записи, а просматриваемое поле - текст или заметка, то значение поля можно редактировать. |
dm2002_2002 |
| 151 | Расширение открывать формы для запроса нескольких источников | Расширение открывает выбранную в настройках расширения форму при клике на выбранный столбик. Для открытия необходимо указать какие поля на форме и в запросе сравнить что бы найти целевую запись. Доработка: Версия 1.1: Открывает форму не на одиночный, а на двойной клик. Доработка: Версия 1.2: Устранены ошибки совместимости. Доработка: Версия 1.3: Для открытия разных форм на один столбик добавлено 3 параметра (если они заполнены то параметры 1, 2, 3 можно не заполнять) - 5й - столбик запроса где добавлено текстовое поле на форме в котором записано название формы. 6й - столбик в запросе где добавлено текстовое поле на форме в котором записано название поля по котором искать. 7й - столбик в запросе где добавлено поле 6, с него получаем значение для сравнения. Если они заполнены то на один столбик можно прикрепить разные формы и будет открывать по названию формы и поля в запросе сравнивая значение поля формы со значением с указанным полем запроса. Для этого на каждой форме нужно создать поля где будет записано название формы и поля с которым нужно работать запросу и их добавить в запрос для каждого источника где нужно открывать разные формы на один столбик. Доработка: Версия 1.4: Исправлены ошибки совместимости. Ускорена работа. Добавлено отлов ошибок. |
Иван |
| 152 | Расширение резиновое поле (несколько полей) | Расширение для работы с большими текстами или экономии на размере записей если диапазон длины текста может быть от очень мелкого до огромного. Для работы расширения на форме нужно поле dxMemo, таблица и в ней dxMemo. Эти объекты добавляем в расширение. Указывая размер dxMemo на форме 100 символов и такой же размер в таблице (можно указать и больше но нет особого смысла), при сохранении записи в таблицу будет писать записи по 100 символов пока не запишет весь текст. При открытии формы будет создано виртуальное TMemo и в него скопирует суммарный текст всех записей таблицы. Дальше мы фактически работаем в нем). На форме можно создать произвольное количество таких полей. Если задать один/оба предпоследние параметры в настройках (ширина и высота) то при клике на Memo будет изменение ширины и/или высоты. При повторном клике вне области Memo размер будет возвращен. Пока мы редактируем с ресайзом другие поля добавленные в расширения будут недоступны для редактирования. При сохранении записи в поле dxMemo будет записан текст по размеру равному количеству символов что можно в него записать (для удобства просмотра в запросах). Если текст не был изменен то записи в таблице не будет перезаписывать, это особенно ощутимо на записях свыше нескольких сотен тыс. символов. Галочка скрыть таблицы - скрывает таблицы для пользователя. Работа со всеми типа TipeView (кроме простой формы, только форма). Обновление 1.4: - Если нужно записать из скрипта текст в поле мемо на котором подключено расширение, передаем его в Params с именем равным имени поля_put. - Если нужно добавить текст к уже существующему имя поля_add . - Если нужно вернуть текст записанный в мемо - имя мемо_get. (если сохраняя запись существует один из Params описанных выше будет брать данные из них, после этого зануляет). Пример: Code: Выделить всё T.OpenRecord(114);Модуль написан по примеру кода пользователя Гость Пример: "Резиновое" текстовое поле. Обновление 1.5: По примеру модуля добавлена Вставка текста в место нахождения курсора на виртуальных полях. Обновление 1.6: Добавлена возможность получения доступа к тексту мемо используя Getvar(имяполя_get). Для срабатывания вычислений необходимо на форме добавить dxLabel и выбрать его в расширении (который считает количество символов). Именно при вычислении количества символов одновременно происходит перезапись Getvar и вычисление всех полей где есть Getvar(имяполя_get). Обновление 1.7: Свойства вставки текста в место курсора: Не обязательно выбирать мемо куда будет проивзедена вставка текста (если не выбрано то вставка будет произведена в мемо на котором произвели клик, кликом на родителя мемо (форму или группу) снимаем выделение). Если все же выбрано мемо куда вставлять текст, то оно будет использовано как поле по умолчанию если нет выбранного поля для вставки. Вставка производится в место курсора или замена выделенного текста. Добавлено ряд свойств, настройку которых можно проводить на родительском мемо поле: ReadOnly, BorderStyle, NumbersOnly, PopupMenu, ShowHint, Color. Обновление 1.8: Добавлено совместимость управления видимостью и доступностью посредством модуля EnableOrVisible версии >=1.5. Обновление 1.9: Добавлено откат вперед назад по Ctrl + Z/Ctrl + Y (1000 последних изменений поля конкретной записи), выделить все Ctrl + A. Добавлено меню для управления текстом и cрабатывание копирования текста кнопками. |
Иван |
| 153 | Расширение связанные объекты (ширина, высота) | Расширение позволяет связать две таблицы, запросы или произвольные объекты для изменения размера второго при изменении первого. Работает аналогично тому как растягивать форму. При наведении курсора на область изменения появится соответствующий курсор, при зажатой левой кнопке мышки можно тянуть куда нужно. Если выбрать синхронное изменение то при увеличении первого будет увеличен на столько же второй, если указать асинхронно при изменении первого будет уменьшен второй. Можно указать виртуальный объект (например дерево) что были созданы на объекте, тогда их размер будет аналогично регулироваться. На демо базе расширение добавлено на форму товарооборот. | Иван |
| 154 | Расширение уникальность поля таблицы несохраненной записи | Проверка валидации на уникальность поля в несохраненной подчиненной записи несохраненной/сохраненной формы по отношению к другим записям на данной форме в данной таблице. Нужно добавлять на форме таблицы как расширение формы. | Иван |
| 155 | Расширение файловая система HTTP + LOCAL | Добавлено обновление 1.2: а. введена функция для считывания CMD ipconfig, а именно получения IP, шлюз, маска сети ПК на котором запускаем клиент. Если данные соответствуют серверу возвращает true. б. добавлена возможность заполнять свойства сервера в настройках расширений. в. для работы в сложных сетях добавлено свойство IPlocal (локальный IP ПК в вашей сети на котором запущен сервер). Для работы необходимо создать на сервере в папке установки ДХ файл метку с именем равным IP (пример: 99.999.999.99.txt). Смотрите пример БД. Расширение состоит из двух модулей, один для сервера, второй для клиента. Так же дополнительно форма с описанием (+ она хранит картинки для кнопок меню запроса). И сама форма файлов. Прикрепил пример БД. Сервер FilesServerHTTP (действие при запуске) Cистема отправки/получения/удаления/обновления файлов на сервере через протокол HTTP. Начало работы: a. Заполняем аргументы оверрайд функций свойств сервера (смотрите 'Функции файловой системы' в редакторе скриптов, если эти функции заполнены то их параметры и будет использовать расширение во всех формах даже если заполнены соответствующие поля в настройках расширения) или заполняем настройки в самом расширении (в этом случае нужно заполнять каждое расширение отдельно вручную, но это дает возможность использовать разные сервера для разных форм). Следующие Функции делают оверрайд над заполненными параметрами в настройках расширений. SDefBase - корневая папка на сервере для хранилища файлов. Выше нее будут создаваться все папки хранилища. SDefIP - статический IP или ddns. SDefIPlocal - IP сервера в вашей сети (может совпадать с IP если не используете роутер). SDefMask - маска сети сервера. SDefG - Gateway шлюз сервера. SDefAPIKey - ключ доступа (произвольный пароль, числа и буквы, без пробелов). SDefPort - порт (он должен быть свободен и доступен на сервере, иначе выдаст предупреждение). Если сервер включен через роутер, что скорее всего так и есть, нужно сделать проброс порта. ApiKey - ключ доступ. b. Расширение будет запущено на клиенте что включен на ПК с параметрами: а. Соответствуют параметры IP, маска сети, шлюз настройкам сервера и в папке ДХ существует файл метка с именем равным IP (пример: 99.999.999.99.txt). б. Клиент DX запустил пользователь под именем FileServer (нужно создать вручную). В БД примере уже создано. Если вы работаете не на ПК сервера то будет включена версия клиента для работы по HTTP иначе версия LOCAL (модуль FilesClientHTTP). Функционал варианта работы LOCAL аналогичен, только работа будет не по сети. Актуально для работы с большими объемами файлов. LOCAL работает независимо от HTTP сервера, данные про подключение ему нужно только для понимания когда запускаться. Для работы LOCAL нужно просто заполнить функции оверрайд или заполнить поля в настройках расширения. Если нет интернета оно все ровно будет локально работать. Передает файлы стримом в один поток по одному файлу по очереди без какого либо шифрования, подключение по паролю (заполняем функцию SDefAPIKey или поле в настройках расширения), скорость зависит только от скорости вашего интернет соединения. Если операция не удалась вам выдаст сообщение, если включен дебаг то покажет почему именно (дебаг можно отключить в настройках). В папке с установленным DX в файл ErrorDXF\FilesServerHTTPlog_дата.txt пишет все ошибки, если вы отключили показ debug в настройках расширения то можно посмотреть ошибку в этом файле. Если возникакет ошибка при записи файла проверьте права доступа пользователя к данной папке. Дополнительная форма 'Описание для файла' хранит в себе картинки для меню и используется при вводе описания файла или изменении имени файла. При пересылке по HTTP текста он кодируется заменой на дозволенные символы, при получении на сервере раскодируется назад. Итого запрещенных символов в текстах нет. Клиент FilesClientHTTP (установка на каждую форму + копируем туда запрос) Файл идентифицирует: установленной в расширении корневой папкой хранения на сервере, именем, названием формы и идентификатором формы recID. Модуль работает в двух режимах: А. Работа на сервере LOCAL Расширение будет запущено если параметры IPlocal, маска сети или шлюз не соответствует серверу или не найден файл-метка. Работа с файлами проходит локально на ПК, актуально для работы с большими файлами. По имени файла или описанию нет ограничений по символам (в именах - кроме тех что в принципе не могут быть пропущены Windows). Б. Работа по HTTP Расширение будет запущено если параметры IPlocal, маска сети, шлюз соответствует серверу и на ПК существует файл метка. Работа с файлами проходит по протоколу HTTP. При скачивании файла на клиент он будет сохранен в папке 'Имя пользователя_файлы'\форма\idrec в локальной директории установки DX. Если файл удален после просмотра и папка пуста она будет удалена. Большинство возможностей аналогичны для HTTP и LOCAL. Возможности: 1. скачать для просмотра файл из сервера (для скачивания и просмотра - двойной клик по записи в запросе). Для версии работы на сервере просто открывает файл для просмотра. 2. открыть папку с файлами с выделенным целевым файлом. Если удаленная работа и файл еще не скачан будет предложено его скачать. 3. добавить файлы в хранилище сервера создав соответствующую запись в БД (бросая на форму или кнопкой). 4. создавать в БД записи о файлах что были вручную добавлены на сервере (можно выбрать при настройке. Действие происходит при открытии формы из запросом. Если у вас не стабильный интернет лучше отключить иначе будет подтормаживать). 6. добавить описание до 100 символов, нет запрещенных символов (если в настройках расширения выбран чекбокс на форме для активации всплывающего окна описания. Если при это на форме описания файла поставить галочку 'Применить ко всем файлам' то описание будет добавлено ко всем добавленным за раз файлам). 7. удалить файлы (при этом в настройках расширения можно выбрать удалять файлы безвозвратно или создавать перейменованную версию что не видит (по умолчанию) запрос, но их можно просмотреть нажав в меню запроса 'Отображать удаленные файлы'). Удалить уже помеченные на удаление через ДХ нельзя, для этого добавлен фильтр. Если на локальном ПК есть уже скачанная версия будет предложено удалить ее после удаления серверной версии. 8. обновить версию файла на сервере (HTTP работа). Если вы скачали себе для работы файл то нажав в меню 'Обновить файл на сервере' он будет перезаписан на сервер. При этом при настройке расширения можно выбрать создавать перейменованную версию или удалять старую версию файла). 9. изменить описание к файлу. 10. изменить имя файла (до 150 символов, ограничения по символам Windows). 11. просмотреть локально существующие файлы. Если в запросе подсвечивает имя файла желтым значит на данном ПК он существует и он может быть просмотрен). 12. если нужно переместить папку хранилища с файлами просто скопируйте ее куда нужно вручную и пропишите новую директорию корневой папки в функцию SDefBase или в настройки расширения. |
Иван |
| 156 | Расширение, вычисляемые поля в таблице формы | Решил выложить, немного спорное свое расширение, но может кому пригодится. Расширение может замедлить работу базы Данное расширение позволяет выводить в табличную часть формы, дополнительные вычисляемые поля, и раскрашивать их по условию. Не внося изменений в поля базы данных. Для функционирования расширения, необходимо создать поля соответствующего типа данных которые будете в них выводить (или использовать существующие, в этом случае реальные значения полей будут перерисованы!). Далее можно настроить табличную часть стандартным образом(выравнивание и стиль текста наследуется из настроек таблицы). Расширение подключается к форме. В настройках расширения выбираете нужные поля "Вычисляемые поля" и пишите выражение, результат которого будет отображен в таблице. С раскраской ячеек все аналогично, единственное что нужно отметить, обращение к текущему полю производится стандартно по имени компонента. (но данные в форму не заносятся, т.е. вычисления производятся налету при отрисовке таблицы). ВАЖНО: Т.к. все расчеты производятся в момент отрисовки, сложные выражения будут тормозить систему!!! Все расчеты заносятся в буфер и вычисляются однократно, для текущего вида. Далее выводятся из буферов(StringList). Данные из буфера очищаются при выходе из режима редактирования записи формы (события cancel и post), при этом пересчитывается только редактируемая запись. А также полная очистка буферов происходит при показе окна списка или смены вкладки программы(переход с другой формы на текущую) или уничтожения данной формы (FormDestroy). Также можно очистить все буферы, вызвав функцию Clear_Bufers из выражений. Пользуйтесь с осторожностью и пониманием. Пример использования во вложении: форма "товары". 15.11.22 - обновил вложение Вычисляемые поля формы2.0.epas, исправил конфликт в событиях. |
Vofka18 |
| 157 | Расширение: Срок действия базы | Доброго времени суток! Появилась необходимость ограничить время работы базы. Написал простенькое расширение для MainFm |
Runenkov |
| 158 | Резервное копирование базы | Расширение добавляет кнопку резервного копирования базы на панель инструментов. База архивируется при помощи утилиты 7zip, которая автоматически скачивается с сайта http://mydataexpress.ru. Базы архивируются в определенную папку. Имена архивов имеют вид: дата_время_база.7z. Тип действия: действие при запуске. 2.1 (актуальная) 1. Исправлена ошибка копирования шаблонов, если в пути есть символы кириллицы. 2.0 1. Резервное копирование , восстановление и сжатие сетевой базы данных утилитой gbak. 2. Резервное копирование при закрытии базы. 3. Добавление задачи в планировщик заданий. 1.0 |
admin |
| 159 | Резиновые столбцы в запросах | Растягивает по ширине указанные столбцы в запросах. Цепляем на форму и указываем запросы и столбцы для авторастягивания | anderslonss |
| 160 | Сборная солянка различных действий | Доброго времени суток! Выкладываю расширение из различных действий, которые часто использую в свои базах. Часть действий я написал сам, часть взял у других авторов. Расширение содержит следующие действия: ДЕЙСТВИЯ ДЛЯ БАЗЫ: - Скрыть тулбар; ДЕЙСТВИЯ ДЛЯ ФОРМЫ: - Кнопка очистки в поле; - Всплывающие подсказки; - Клик перед удалением записи; - Клик левой кнопкой мыши; - Двойной клик на компоненте; ДЕЙСТВИЯ ДЛЯ КНОПОК: - Закрыть программу; - Закрыть текущую форму; - Пересчет текущей формы; - Очистка фильтра формы; - Открывает нужную форму в отдельном окне; - Запустить приложение/файл; - Нажатие кнопки запроса; - Дублировать запись таблицы; - Выбрать объект из отчета; - Получение правильных имен у объектов базы; - Получение скрипта для примечаний форм; - Получение скрипта для примечаний полей; - Обновить текущую форму; - Обновить дерево у формы; - Нажатие нужной кнопки; - Печать с условиями; - Вставка текста; - Нажимаем кнопку у dxLookupComboBox; |
dm2002_2002 |
| 161 | Системный трей |
Скрутил расширение по вашим сообщениям для удобства, как раз искал как это реализовать) |
Иван |
| 162 | Сканирование штрих-кодов | Сканируете штрих-код сканером штрих-кодов и автоматически жмется кнопка с нужными действиями. Штрих-код получаете функцией BarCode. Работает с любым представлением формы. В представлении "только таблица" работает в окне редактирования. Поддерживается только сканеры в режиме эмуляции клавиатуры с включенным режимом Windows Mode Control+X. Для определения начала и окончания сканирования задается префикс и суффикс Ctrl+клавиша. Можно сканировать простые штрих-коды и коды DataMatrix. | admin |
| 163 | Скрытые/служебные поля формы | Расширение позволяет скрывать группу на форме, в которую можно добавить служебные поля. Скрываемая группа должна быть расположена ниже всех остальных (видимых) элементов формы. Добавляется, как действие формы. |
Megabyte |
| 164 | Скрыть меню Файл и Помощь | Простое расширение, скрывающее стандартные пункты меню "Файл" и "Помощь", оставляя видимым только пункт "О программе". Тип действия - при запуске. | admin |
| 165 | Скрыть тулбар. | Простой акшен для скрытия верхнего или нижнего тулбара. Цеплять на форму. Code: Выделить всё {@actionCode: Выделить всё {@action |
SirWolf |
| 166 | Соединить поле выделенных записей | Добрый вечер. Решил поделиться с расширением, может кому понадобится. Расширение соединяет поле выделенных записей в подчинённой таблице или запросе. В этом же расширение есть действие при запуске "Мультивыбор", код был взят из расширения kok80-ExportToExcel Сам лично использую для выбора почт, файлов для рассылок и для выбора каких-либо записей. Пример: В данном примере поля для заполнения является заметка "ID выделенных", поле соединения "ID". Демо: Расширение: |
shavkat |
| 167 | Сокращатель ссылок (u.to) | Функция: "U_TO". Сокращает длинный URL посредством одноименного сервиса. Группа: "Интернет" Пример: U_TO('https://forum.mydataexpress.ru')Результат: https://u.to/V5gKFg Примечание: Сервис не предоставляет открытого API для полноценного с ним взаимодействия, посему функция реализована "альтернативным" способом (то есть - ее стабильная работа не гарантируется). На каком-то "превышении лимита" начинает себя пиарить просит "немного подождать": ![]() [ Скачать ] |
Develop-Soft |
| 168 | Сохранение позиции в запросе. | Достаточно простое расширение для запоминание позиции запроса перед выполнением след действия, а потом перехода на нужную позицию. Мне помогло решить проблему, когда позиция находилась в центре запроса, а после редактирования и обновления она исчезала, запрос сбрасывало на начальную позицию. Code: Выделить всё var |
SirWolf |
| 169 | Сохранение ширины и порядка колонок grid формы | Каждый user может сам под себя настроить ширину и порядок колонок: просто меняете ширину и/или позицию колонки, при следующем запуске всё восстанавливается |
kok80 |
| 170 | Сохранение ширины столбцов | Основное назначение: Модуль автоматически сохраняет и восстанавливает ширину колонок для компонентов dxGrid и dxQueryGrid, используя базу данных Firebird для хранения настроек. С привязкой к форме, гриду, колонке и текущему пользователю. версия 1.0 от 14.04.2026 Действия кода: Инициализация таблицы - Проверяем существование таблицы в Firebird, создаёт её при необходимости и добавляем необходимые столбцы. Сохранение ширины колонок - При закрытии формы сохраняем текущую ширину всех колонок гридов в базу данных с привязкой к форме, гриду, колонке и текущему пользователю. Восстановление ширины колонок - При открытии формы загружаем сохранённую ширину колонок из базы данных и применяем их к соответствующим гридам. Управление настройками пользователей - Поддерживает индивидуальные настройки для каждого пользователя, а также общие настройки по умолчанию. Обработка событий формы - Перехватывает событие OnDestroy формы для автоматического сохранения настроек перед закрытием. Сброс настроек - Есть функции сброса сохранённой ширины для текущего пользователя или всех пользователей. Технические особенности: Использует SQL-запросы UPDATE OR INSERT для обновления/вставки записей Поддерживает фильтрацию гридов через список разрешённых имён Есть режим отладки с логированием действий Обрабатывает ошибки SQL-операций без прерывания работы В Модуле реализовано три действия: основное действие для формы, для активации функционала, и две кнопочные функции для сброса настроек. . |
mobmk |
| 171 | Список полей формы для компонета список | Сделал расширение для получения списка компонентов формы с именем поля или отображаемой надписью. Список будет отображаться в компоненте список. Хотелось бы ещё настроить, чтобы имя формы можно было задавать в соседнем поле, но такая магия пока не срабатывает. |
cordek |
| 172 | Сумма прописью на английском | Доброго дня! Возможно, кому-то пригодится... |
Runenkov |
| 173 | Телеграм бот для DataExpress | Как всегда вопросы, пожелания, предложения и конструктивная критика приветствуются. Если есть необходимость заставить бота создавать записи в базе, то это можно сделать с помощью функции CreateRec. Поиск и вывод информации из базы удобнее делать с помощью DBMERGEA. МОДУЛЬ Эмоциональные посты типа: "О ужас ничего не работает. Всё пропало." - мне не интересны и по факту это просто флуд. Если вам нечего сказать по существу темы - проходите мимо. Еще раз. Я не против критики, если она по делу. Я против "пугалок" и "страшилок". |
jurist23rus |
| 174 | Телеграм-Макс-бот | Интеграция ботов Телеграм и Макс с базой данных. Бот программируется при помощи выражений. Для работы расширения требуется веб-сервер, https и домен. Подробности в инструкции. Посмотреть как это работает можно в демонстрационной базе. Логин: Пользователь Пароль: 1 Строка подключения для десктоп-версии: base.mydataexpress.ru:tg_demo |
admin |
| 175 | Транслитерация кириллицы. | Иногда нужна транслитерация, особенно имён-фамилий. Пользуюсь этим расширением. Расширение возвращает надписи кириллицей на латинице в версии Волапюк, ИКАО (для проездных документов, например загранпаспортов) и на туркменской латинице. Демо: |
Runenkov |
| 176 | Убрать нули без потери точности dxCalcEdit | Расширение для визуального представления на форме чисел без лишних ноликов без потери точности. Все вычисления что были прописаны на полях или в скриптах будут срабатывать, изменится только вид полей при открытии формы. Смотрите скрины до и после. Особенности На двойной пробел в пустом поле выдаст ноль + запятая для дальнейшего ввода цифры. Совместим с другими модулями видимости и доступности компонентов. Можно указать отображать ноль или null независимо от этого свойства в поле dxCalcEdit. Чексбокс: показать поля правее - ознакомительная функция, позволяет посмотреть виртуальные TEdit поля и выбранные числовые поля формы порознь. Обновление 1.1: Изменено метод вовлечения полей: подхватывает все числовые поля на форме. Возвожмность менять число скролом. Если ставить курсор после запятой будет менять соответствующую степень числа. Свойство видимости кнопки берет из свойства числового поля. Свойство Nul в 0 берет из свойства числового поля. |
Иван |
| 177 | Удаление из строки повторяющихся элементов текста | Функция RepeatRemr(текст, разделитель) удаляет повторяющиеся элементы текста, которые разделены разделителем, например «;» P.S. Делал для себя, может кому сгодиться. |
RetCat |
| 178 | Универсальный модуль HTTP сервера для API | Решил поэкспериментировать с ИИ И сделать модули для запуска сервера с универсальным HTTP API То есть он должен автоматически распознавать поля на форме и выдавать результат запроса в json, а также добавлять в форму записи, заполняя их из json, отыскивая нужные поля Пример базы пока в работе, модули пока сырые, не оттестированы. Веб модуль должен быть в WEBMAIN, доступ к нему происходит через настройку serviceid Модуль для десктопа надо прикреплять к какой-то форме, которая у определенного пользователя стартует при запуске. |
cordek |
| 179 | Универсальный модуль для HTTP запросов (GET, POST, DELETE) | Модуль для работы с API через HTTP-запросы. Отправляет HTTP-запрос с указанным методом, URL, заголовками и параметрами, и получает ответ в формате JSON. Результат сохраняется в специальной переменной "request_result". Можно прикрепить в форме или кнопке. JSON из ответа парсится и сохраняется во внутренних переменных в соответствии с узлами объектов json. Списки нумеруются от 0 <b>Пример для DADATA.RU :</b> метод 'POST' URL запроса <br><br> 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party','Content-Type=application/json,Accept=application/json'<br><br> 'API-ключ'<br><br> Имя параметра - query<br><br> Значение параметра [ИНН]<br><br> Расширение имеет и веб версию Пример с Dadata.ru |
cordek |
| 180 | Управление видимостью/доступностью компонентов | Действие формы. Обеспечивает доступность/видимость компонентов по условию. | admin |
| 181 | Управление закладками форм | Действие запуска. Позволяет выполнить кастомные настройки закладок форм и расширить функционал управления закладками. (работает с версией DataExpress от 15.03.2020 и новее) ![]() Возможности и опции: ![]() Управление:
Добавляет в меню закладок дополнительный пункт, нажатием на который можно закрыть все закладки (кроме добавленных в исключения) 2. Закрытие нажатием колесика мыши Активирует возможность закрытия закладки указанным способом (закладки, добавленные в исключения - не закрываются). 3. Разрешить перетаскивание Опция позволяет перетаскивать мышью закладки относительно друг друга. 4. Запретить закрытие Блокирует от закрытия любым способом закладки указанные в списке. Внешний вид:
Числовое значение высоты закладок (в пикселях). Установлено ограничение в диапазоне 16..64. 6. Название шрифта Можно указать кастомный шрифт (он должен присутствовать в системе, в противном случае, а также при пустом значении - будет установлен шрифт по-умолчанию) 7. Размер шрифта Устанавливает размер шрифта (при пустом значении - будет установлен шрифт по-умолчанию). 8. Стиль шрифта: 9. Иконки закладок/форм: Устанавливает выбранные из галереи иконки для закладки и окна формы редактирования (если установлен режим отображения "только таблица). |
Develop-Soft |
| 182 | Управление компонентом "Закладки"(PageControl) | Данный модуль позволяет ставить метки на вкладки компонента "Закладки", по условию. Также есть возможность подключать действие к форме несколько раз, для разных компонентов "Закладок". "Метка" может быть иконкой из галереи или просто пометка символом "*" в начале заголовка вкладки. Нумерация вкладок начинается с ноля. "Запомнить вкладку в поле" С помощью данной опции можно указать числовое поле на форме, в котором будет сохраняться текущая вкладка компонента закладок, для текущей записи. Естественно запись формы должна быть сохранена. Также числовое поле (выбранное в данной опции) будет скрыто от пользователя. |
Vofka18 |
| 183 | Управление пользователями базы данных | Управление пользователями базы данных. Любая форма может стать хранилищем логинов и паролей к вашей базе данных. Данное расширение упрощает работу с большим количеством пользователей. Есть действия для массового создания и удаления пользователей из БД, а также функция генерации паролей. Более подробную информацию вы можете найти в настройках действия. |
admin |
| 184 | Установка значения по умолчанию | Здравствуйте! Делал для себя расширение, может кому то пригодится. При использования расширения нужно выбрать какой-нибудь флажок, который будет использоваться по умолчанию. При установке в нем значения true данный флажок во всех остальных записях будет иметь значение false. |
dm2002_2002 |
| 185 | Фильтр дерева объекта | Действия формы. Фильтрует дерево в окне списка объекта исходя из фильтра объекта. Работает при условии присутствия в дереве ОДНОГО поля с источником типа ОБЪЕКТ. Будут показаны только те узлы, для которых есть записи. Могут присутствовать ошибки, тестировал на дереве с иерархией. |
Megabyte |
| 186 | Форматирование даты и времени | Устанавливается как и любой другой модуль расширений. Что это такое и как установить можно прочесть тут. Содержит функции:FormatDate ('строка форматирования', [Дата]) - преобразует дату в строку с определённым форматированием.y = Год из 2-х последних цифр yy = Год из 2-х последних цифр yyyy = Год из 4-х цифр m = Номер месяца без 0 mm = Номер месяца как 2 цифры mmm = Месяц используя ShortDayNames (Янв) mmmm = Месяц используя LongDayNames (Январь) d = Число без 0 dd = Число как 2 цифры ddd = Число используя ShortDayNames (Воск) dddd = Число используя LongDayNames (Воскресенье) ddddd = Число в ShortDateFormat dddddd = Число в LongDateFormat FormatDate ('dddddd', [Дата]) //Возвращает: 09 Февраля 2000 FormatDate ('dddd d mmmm yyyy', [Дата]) //Возвращает: Среда 9 Февраля 2000 FormatDate ('ddd d mmm yyyy', [Дата]) //Возвращает: Ср 9 Фев 2000 FormatTime ('строка форматирования', [Время]) - преобразует время в строку с определённым форматированием.h = Час без 0 hh = Час как 2 цифры n = Минуты без 0 nn = Минуты как 2 цифры s = Секунды без 0 ss = Секунды как 2 цифры z = Миллисекунды без 0 zzz = Миллисекунды как 2 цифры t = Используя ShortTimeFormat tt = Используя LongTimeFormat FormatTime ('t', [Время]) //Возвращает: 01:02 FormatTime ('tt', [Время]) //Возвращает: 01:02:03 FormatTime ('hh:mm:ss.zzz', [Время]) //Возвращает: 01:02:03.004 FormatTime ('h:m:s.z', [Время]) //Возвращает: 1:2:3.4 |
jurist23rus |
| 187 | Функция ABSVALUE() абсолютное значение | Здравствуйте! На форуме уже есть решение, но сделал более замороченное решение. Может пригодится. AbsValue([Сумма]) |
albereznyuk |
| 188 | Функция FreeDaysCount() считает субботы и воскресения в диапазоне дат | Представляю Вашему вниманию функцию FreeDaysCount() Основная задача - посчитать количество суббот и воскресений в заданном диапазоне дат. FREEDAYSCOUNT([Начальная дата],[Конечная дата]) Параметры: дата1, дата2. Результат: число. Пример: FREEDAYSCOUNT(CDATE('01.07.2021'), CDATE('31.07.2021')) Результат: 9 Не имеет значения в каком порядке указаны даты, т. е. первой может идти конечная дата, а затем начальная. Пример использования: Функция: В примере показана возможность работать с календарём праздничных дней, которые пользователь может определить самостоятельно. А вот переносы дней на субботы или воскресения видимо можно реализовать средствами DX. |
albereznyuk |
| 189 | Функция вставки произвольного символа в указанную позицию | Здравствуйте! Может кому-то пригодится Функция вставки произвольного символа/текста в указанную позицию, вместо символа можно вставлять и поле с текстовым значением. CustomInsert('202601', '-', 5) Параметры: текст, символ вставки, позиция Результат: 2026-01 CustomInsert('12345', '-', 3) → 12-345 CustomInsert('Привет', ' ', 4) → Прив ет CustomInsert('Текст', ' текст2 ', 6) → Текст текст2 |
albereznyuk |
| 190 | Функция закрытия приложения | Функция закрытия приложения в случае отсутствия файла конфигурации. Расширение файла конфигурации значения не имеет. Code: Выделить всё ////////////////////////////////////Работать должна только в модуле Main проекта. Пример: Code: Выделить всё Main |
RONSHIF |
| 191 | Функция кастумный диалог | Эта функция открывает кастумный диалог. DialogFunc ('вопрос','варианты кнопок через точку с запятой;отмена;добавить;ваш вариант'); Результат выдает в формате порядкового номера нажатой кнопки от 1-го до n. Если кнопку не нажимали, закрыли окно, результат 0. |
Иван |
| 192 | функция отправки почты через JS | Сделал отправку электронной почты через JS. Используется библиотека Windows функция позволяет отправлять письма с разных ящиков, все настройки можно задавать в явном виде (текст), либо брать из полей базы. В планах добавить как модуль действие для кнопки. Добавить отправку многострочного текста. Добавить отправку файла Добавить отправку файлов JS_send_email 0.1 реализован в виде функции. Позволяет писать письма только из одной строки. |
cordek |
| 193 | Экспорт данных в csv | Всем доброго времени. Для собственных нужд был разработан модуль экспорта данных в csv. Модуль был основан по образу и подобию от Vofka18 https://forum.mydataexpress.ru/viewtopic.php?f=16&t=4322. Не судите строго. Первый опыт. Может кому пригодится. Из доп функций: в таблице можно произвести некоторые вычисления, которые не используют другие поля (это которые [Поле]). В основном используются функции DATE, TIME, USER. функции которые что-то возвращают. Эти изменения можно отправить на экспорт или внести в базу, а можно и внести в базу и отправить на экспорт. Обработка идет через SQL Select. Скорость хорошая. |
doosss |
| 194 | Экспорт текста в XML | Расширение для 'экспорта текста в XML. В своей базе в заметке сделал выражение и результат через данное расширение экспортирую в XML. Использовал наработки с форума. Из двух вариантов решений собрал сборную солянку.
|
VdoVin |












.














