Программная замена кода метода объекта. | |
---|---|
Владислав Автор Сообщений: 2 Дата регистрации: 25.08.2017 |
Здравствуйте! Судя по тому что удавалось найти подобная тема поднималась неоднократно (активно лет 10 назад), но, в тех темах, которые удалось найти, либо предлагали решать проблему на этапе компиляции, либо специализированными для форм методами, что не подходит.
Суть проблемы. Есть программа которая обращается к внешним шаблонам отчётов подключая их дополнительные модули .app. В ходе обработки шаблона программа динамически формирует формы, в ходе чего, при некоторых условиях, вызывает метод valid класса tdialog_rep, который содержит ненужные для некоторых отчётов проверки. Было бы хорошо, во время вызова шаблона, программно подменить код метода tdialog_rep.valid на свой, а затем вернуть его обратно, чтобы не возникало проблем с другими отчётами. Не подскажете, возможно ли сделать подобное средствами VFP9? чтобы логика была примерно такой:
Исправлено 1 раз(а). Последнее : Владислав, 25.08.17 12:00 |
Re: Программная замена кода метода объекта. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет. Так делать нельзя. Да и не надо никогда.
Можно свой объект с кодом проверки подсовывать а из класса его дёргать - тогда заменяя объект ты заменяешь и код проверки. Можно просто флажком (в классе свойство сделать - типа SkipValidation) вообще проверку отключать. Можно, наверное, ещё придумать кучу вариантов как добиться нужного поведения Метод в фоксе объектом не является. ------------------ WBR, Igor |
Re: Программная замена кода метода объекта. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Видимо надо переделать шаблоны
В методе валид ввести параметр Когда без него, все как раньше, когда с ним, есть варианты. Например вызывать ExecScript Который создавать в вызывающем объекте. (что то мне не нравится) Можно попробовать с BindEvent поиграться Но лучше всего вызывать код проверки самого вызывающего объекта ------------------ Исправлено 1 раз(а). Последнее : Аспид, 25.08.17 15:43 |
Re: Программная замена кода метода объекта. | |
---|---|
Владислав Автор Сообщений: 2 Дата регистрации: 25.08.2017 |
Благодарю за советы!
Попробую на следующей неделе в этом направлении посмотреть:
Извиняюсь, что не пояснил, что сама программа разрабатывается сторонними разработчиками, иногда обновляется, поэтому перекомпиляция её самый крайний случай (скорее от отчётов откажемся). Как результат нет возможности непосредственно переписать сам метод. Исправлено 1 раз(а). Последнее : Владислав, 25.08.17 20:27 |
Re: Программная замена кода метода объекта. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Значит делайте свою форму и не пользуйтесь их. Влезть "снаружи" в чужой код, если он сам не предусматривает такой возможности, нельзя.
------------------ WBR, Igor |
Re: Программная замена кода метода объекта. | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Мне как-то удалось сделать что-то подобное, воспользовавшись тем, что чужая вызываемая программа не гасила клавишные комбинации (ON KEY LABEL). Видимо, программисты не застали и не успели поработать в FPD.
Работая уже в их программе, и нажимая нужную комбинацию, я передавал управление своей программе, а далее - анализ всего (переменных, свойств, таблиц и т.п.), что можно проанализировать, а при удаче - подменить своими значениями или даже своими таблицами, изменив, таким образом, ее дальнейшее поведение. Исправлено 1 раз(а). Последнее : akvvohinc, 26.08.17 01:16 |
© 2000-2024 Fox Club  |