10.06.2004, 13:25 | #1 |
Участник
|
Object - form, Class...?
Добрый день!
Есть element.args().caller() - возвращает Object Есть перечислимый тип MenuItemClass который имеет значения: Class, Form, Job, Query, Report и т.д. (Перечисление открывается в каждом MenuItem свойства, поле Class) так вот в зависимости от Object нужно задать значение MenuItemClass т.е. Object это форма отчет или класс... - как определить? Заранее Спасибо! |
|
10.06.2004, 13:42 | #2 |
Участник
|
SysDictClass::isEqualOrSuperclass(classIdGet(obj),classnum(...))
|
|
10.06.2004, 14:11 | #3 |
Гость
|
если (classIdGet(element.args().caller()) == classNum(FormRun)) - значит форма
ReportRun - отчет, и.т.д |
|
10.06.2004, 14:44 | #4 |
Участник
|
Цитата:
Изначально опубликовано ahtoh
если (classIdGet(element.args().caller()) == classNum(FormRun)) - значит форма ReportRun - отчет, и.т.д так что такой способ не годится. Правильней проверять является ли данный класс потомком FormRun. как уже и было написано ранее |
|
10.06.2004, 16:38 | #5 |
Участник
|
Господа большое спасибо за ответы!
проблема следующего характера на самом деле: с формами все просто... Из меню запускается отчет -> появляется форма Dialog, причем независимо от того был из MenuItem вызван непосредственно Report или Class Нужно отпределить объект который вызвало меню т.е. либо это отчет либо класс (ограничимся только этим) конечно дастать бы само меню и все тогда отчлично, но как это сделать...? попробуйте правой кнопкой мыши \ настройки \ это диалог (речь идет об отчетах) я могу получить FormRun, затем: object = formRun.args().caller(); // - это DialogRunBase - вызывающий объект object = object.caller(); // это уже наследник от RunBaseReport - в нем вся и загвоздка - толи его вызвал menuitem толи отчет Если немного сумберно прошу заранее прощения и заранее так же спасибо! |
|
10.06.2004, 16:56 | #6 |
NavAx
|
Сделайте несколько Menuitems с разными параметрами и проверяйте эти параметры.
|
|
10.06.2004, 17:09 | #7 |
Участник
|
Еще раз:
Допустим запустили из меню класс, класс запустил форму, у меня есть FormRun. Я хочу узнать что запучтило меню - класс или форму? 2raz: я не делаю меню - они уже существуют, вообще прочитайте все сначала что бы понять вопрос и очем вообще речь - затем пишите ответ. Спасибо! |
|
10.06.2004, 18:22 | #8 |
Гость
|
не знаю, что тебе надо, но полюбому ты как то не хорошо это делаешь.
если у тебя отчет должен вести себя по разному (в зависимости от того, откуда его вызвали) - то передавай это ему через args.parmEnum(), а в классе этот параметр ты можешь инициализировать, перекрыв метод initReportRun() |
|
10.06.2004, 19:14 | #9 |
Участник
|
Тут дело даже не доходит до запуска самого отчета - это и не нужно мне
Я решаю совершенно другую задачу: попробую объяснить "с другого конца" - более глубоко Из пункта меню вызывается некий объект (Форма, отчет, Job ...) 1. Допустим некий пункт меню вызывает некую форму, тогда formRun а именно formRun.args().MenuItemName() - вернет имя пункта меню - отлично! Естественно заведомо яне знаю какой пункт меню запустит юзер и какой объект будет запущен.. 2. Тперь сложнее, допустим некий пункт меню вызавает класс, класс затем запускает некую форму. я вижу форму dialog Если по активации пункта меню сработал отчет я также вижу форму dialog итак в моих руках dialog и не более того т.е. 2.1. либо: MenuItem -> Class (extends RunBaseReport)-> Dialog 2.2. либо: MenuItem -> Class (скажем RunbaseReportStd) -> Dialog но в 2.1 в menuItem свойство Class = Class а в 2.2 в menuItem свойство Class = Report цель моя получить как раз это menuItem или свойства MenuItemName и MenuItemType этого menuItem |
|
|
|