Есть функция, которая возвращает обработанное определенным образом число.
Нужно изменять алгоритм обработки в зависимости от того, с какой формы ее вызвали.
Т.е. надо передать в функцию число, а имя формы, из которой вызвана функция, должно определяться внутри самой функции.
Как это сделать?
..
P.S. Передавать в функцию имя формы в явном виде - не вариант, т.к. придется вносить очень много изменений в уже существующий громадный код.

Когда открываю отчет, он всегда отображается в масштабе 100%.
А можно сделать так, чтобы он сразу открывался в масштабе по ширине экрана?

Спасибо!

А как это сделать?

На одной форме есть две таблицы.
Создаю одинаковые меню:

var
   MyItem_1_On_Frm_Project: TMenuItem;
   MyItem_2_On_Frm_Project: TMenuItem;
begin
    MyItem_1_On_Frm_Project := TMenuItem.Create (Frm_Project);
    MyItem_1_On_Frm_Project.Caption := 'Справка по товару';
    MyItem_1_On_Frm_Project.OnClick := @ShowProductInfo;  // показать справку
    MyItem_2_On_Frm_Project := TMenuItem.Create (Frm_Project);
    MyItem_2_On_Frm_Project.Caption := '-';
    Frm_Project.TableGrid_1.dbPopupMenu.Items.Insert(0, MyItem_1_On_Frm_Project);
    Frm_Project.TableGrid_1.dbPopupMenu.Items.Insert(1, MyItem_2_On_Frm_Project);
    Frm_Project.TableGrid_2.dbPopupMenu.Items.Insert(0, MyItem_1_On_Frm_Project);
    Frm_Project.TableGrid_2.dbPopupMenu.Items.Insert(1, MyItem_2_On_Frm_Project);
end;
//
Но такая конструкция ругается: "Menu inserted twice." и меню создается только на TableGrid_1.

В чем проблема?

Использую функцию ToWordsRu для финансовых документов и договоров.
Однако, она формирует число словами немного не так, как должно быть.
Например, число 12345,67 она пишет так:
Двенадцать тысяч триста сорок пять рублей и 67 копеек.
Но, в договорах это должно выглядеть так:
(Двенадцать тысяч триста сорок пять) рублей 67 копеек.
Т.е. число прописью пишется в скобках, т.к. оно расшифровывает сумму.
Также, не должно быть предлога "и" перед копейками.
Т.е. вся строка суммы договора 12345,67 должна выглядеть так:
Итого: 12 345,67 (Двенадцать тысяч триста сорок пять) рублей 67 копеек
Соответственно, надо убрать из результата функции предлог "и", а также дать возможность поставить скобку перед "рублями".
Вопрос к разработчику - можете ли доработать эту функцию или надо самому писать функцию для переработки возвращенной из ToWordsRu строки.

Есть TableGrid с включенным свойством goCanHideColumn, которое позволяет удалять(скрывать) отображаемые столбцы.
Это очень удобно, т.к. можно мышкой просто "выбросить" ненужные столбцы.
Однако, если делать экспорт в Excel стандартной кнопкой, то скрытые столбцы все равно попадают в xls файл.
Можно ли как-то сделать так, чтобы стандартная процедура экспорта в Excel не переносила скрытые столбцы в xls файл ?

Включил в таблице свойство goMultiSelect.
Пользователь с помощью Ctrl или Shift+Ctrl выбирает несколько отдельных строк или диапазонов строк.
Каким образом можно получить массив id выбранных пользователем строк, чтобы сделать по ним скриптом сложные запросы?

Каким образом можно поменять порядок инструкций LEFT OUTER JOIN в запросе, который сформирован мастером настройки вывода данных в таблицу?
Ведь мастер имеет возможность только поменять порядок полей в блоке SELECT, а порядок расположения в запросе инструкций LEFT OUTER JOIN что-то никак не удается поменять.

Скрипт с использованием ключа реестра не работает как надо.
Первый запуск программы с процедурой создания ключа реестра при открытии Form1 работает нормально.
Но, если закрыть приложение и открыть его снова, то программа перестает узнавать поля в базе данных!
У меня на Form1 расположены две таблицы.
У них есть фильтр (Flag_IsItTask = 0 OR Flag_IsItTask IS NULL)
Так вот при втором и последующих запусках программы возникает исключение MySQL "no such field Flag_IsItTask', после чего форма открывается с пустыми таблицами.
Думал, что БД полетела.
Но, у нее все нормально - такое поле никуда не пропало.
Проблема оказалась в  том, что хранение файлов настроек, как и было задано скриптом переключилось на C:\Users\[USERNAMR]\AppData\Roaming\MyVisualDatabase\Configs\[EXENAME].exe\
Файл настроек там создался, но он совсем пустой.
Пришлось через "Инструменты - Настройка" обратно вернуть указание на файл настроек в папке с программой.
Тогда перезапустив программу все таблицы открылись отображая как положено содержимое БД.
Т.е. если и создавать ключ скриптом для локального хранения настроек, то вместе с этим еще надо существующий файл настроек из папки программы перекладывать в локальное место?

Использую созданную программу в сетевом режиме несколькими пользователями.
Эти пользователи не инсталлировали ПО себе на комп, а просто запускают exe файл, лежащий на сервере в сети.
При этом получается, что файл настроек они используют тот, который лежит в папке с exe файлом.
Т.е. один файл настроек на всех, что неправильно.
Можно ли в скрипте задать путь расположения файла настроек для каждого из пользователей отдельно?

Ruller имеет несколько указателей.
Указатели отступов текста от левой границы страницы запоминаются для каждой записи как положено.
Но, еще есть указатели правой и левой границ самой страницы.
Вот они и то и не запоминаются для каждой записи, а действуют сразу на все записи.
Эти указатели изменяют правое и левое поле печатаемой страницы.
Это видно, например, в режиме предпросмотра.
Однако, если сохранить текст в doc файл, то параметры границ не переносятся в файл.
Текст в файле отображается без учета  установленных в Ruller правой и левой границ страницы.

Есть форма с таблицей, где отображаются ссылки на файлы, полученные по почте.
Добавление файлов происходит через форму редактирования записи со стандартным компонентом Save File in Database.
Все эти файлы у меня должны храниться в определенной папке.
Т.е. для добавления поступившего файла я открываю форму для добавления записи, кликаю на  Save File in Database, открывается Проводник c предустановленной папкой, куда я должен сохранить пришедший файл.
Далее я в почтовой программе зажимаю правой клавишей мыши приаттаченный к почтовому сообщению файл и перетаскиваю его в открытую папку проводника.
Таким образом, копии пришедших файлов оказываются в нужном мне месте и их список отображается в таблице.
Но, нужно упростить эту процедуру.
Нужно сделать так, чтобы таблица "распознала" перемещение над ней мыши с зажатой правой клавишей и, при отпускании ее, получила файл для сохранения его в нужной папке.
Есть ли такая возможность?

114

(1 replies, posted in Russian)

Поскольку эта программа пока не поддерживает SSL для работы с почтовиками, то хочется использовать для этого сторонние программы.
Есть почтовые агенты, которые поддерживают работу с ними по Simple MAPI.
Можно ли как-то использовать этот протокол в MVD для управления сторонним почтовиком?
Насколько я понимаю, Delphi это позволяет делать.

Я же написал, что файл script.dcu есть, но я его удалил ради эксперимента.
И программа работает без него.
Скрипты в программе есть - больше 6000 строк.
Версия MVD 5.1
Может разработчик что-то поменял?

А зачем знать "место убытия"?
Что-то я ни в одной программе управления БД не видел, чтобы при поиске нужной строки подсвечивалась исходная строка.
Причем, если еще раз сделать поиск, то первоначальная исходная строка так и остается подсвеченной.
Т.е. подсветка "места убытия" работает только для самого первого "места убытия".
Наверно, никто еще не догадался, что это очень нужная фича smile

Я и говорю про готовое приложение.
Скомпилировал проект и выкладываю на сетевую папку:
1. Папка Report
2. Папка Script
3. Файлы:
- dbschema.ini
- forms.xml
- graphics.dll
- my_application.exe
- settings.ini
- tables.ini
(никаких файлов для SQLite не выкладываю, т.к. моя база на MySQL)
Соответственно, пользователи запускают my_application.exe из сетевой папки.
В папке Script лежит только один файл - script.pas
Если его там не будет, то скрипты в приложении не работают.
A вот script.dcu я попробовал удалить и оказывается, что для работы exe файла он не нужен.
Вот и получается, что результат моего эксперимента противоречит информации на форуме о необходимости script.dcu для работы exe файла.

Огромное спасибо, Derek!
Именно то, что надо!
Гораздо элегантнее и проще cкрипта с кнопками!

Протестировал. Линейка так и работает неправильно.
Ее значение должно быть уникальным для каждой отображаемой записи.
А сейчас изменение линейки является глобальным.
Т.е. если установить ее в значение, например, 20 мм, то все открываемые записи так и будут отображаться с этим значением линейки.
А надо, чтобы у одной записи можно было установить линейку в 10см, а у другой в 20.
Т.е. установка линейки у одной записи не должна влиять на линейку в другой записи.

Да, этот пример работает.
Но, хотелось бы сохранять порядок строк, который был изменен именно перетаскиванием, а не дополнительными кнопками.
Можно ли как-то получить порядок перетасованных строк в таблице перед закрытием формы, чтобы его сохранить?
Ведь куда то же этот новый порядок строк записывается при перетаскивании?

Спасибо за ответы!
А как можно получить список только тех файлов .fr3, которые используются в проекте?
...
И еще - на форуме пишут, что для работы приложения нужен dcu, а файл pas можно удалить.
А у меня почему-то приложение при удалении .dcu файла работает нормально.
А если .dcu на месте, но нет файла .pas, то приложение не работает.
Это нормально?

Создал программу для работы нескольких пользователей по сети (на MySQL).
Скопировал весь проект со своего ПК вместе с еxе файлом в сетевую папку.
У пользователей на своих ПК есть ярлык на этот exe файл.
Они его запускают и работают.
Когда я делаю очередной релиз, то просто перезаписываю еще раз весь проект в сетевую папку.
Делать инсталляционный файл не хочется, т.к. релизы идут очень часто.
Вопросы:
1. Есть ли возможность сохранять файлы настроек каждого пользователя в сетевой папке (для каждого пользователя свой директорий, например, имя пользователя домена)
2. Накопился мусор в проекте (например, лишние изображения).
Есть ли способ скриптом определять, какие файлы нужны для работы exe файла, чтобы только их автоматом копировать в сетевую папку при очередном релизе?

Вопрос был про запоминание измененного порядка строк.
А то что таблица выводит значения в порядке их id - всем известно.

Обнаружил баг:
Кликаем по любой строке в таблице.
Строка становится активной и она подсвечивается.
Выбираем пункт Find из контекстного меню (правый клик).
Вводим текст для поиска.
Искомое значение находится в какой-нибудь другой строке.
Закрываем поиск.
Строка, в которой был найден текст становится активной и подсвечивается.
Но - первоначально выбранная строка также остается подсвеченной !!!
И остается всегда подсвеченной пока ее не кликнешь.

В TableGrid есть свойство goRowMoving, позволяющее разрешить изменение порядка строк перетаскиванием.
Однако, измененный порядок строк после закрытия формы не сохраняется.
Можно ли как-то сохранять измененный порядок строк?