|
05.12.2005, 18:05 | #1 |
Участник
|
Как обновить форму из класса?
Как обновить форму из класса?
Делаю по порядку так: 1. Из формы(Form1) вызываю класс(Class1), этот класс вызывает в методе prompt другую форму Form2 см. код [PHP boolean prompt() { Args args = new Args(formStr(Form2)); FormRun fr; ; args.caller(this); fr = new FormRun(args); fr.run(); fr.wait(); return fr.closedOk(); }] Открывается форма Form2 в этой форме Form2 пользователь создает новую запись в таблице Table1, после этого нажимает Ок и нужно обновить данные в первой форме Form1. Эта форма имеет DS - Table1 и открыта на экране в момент создания записи из Form2. Как это сделать из класса или еще как то программно? |
|
05.12.2005, 18:28 | #2 |
Moderator
|
Можно по-разному. Класс каким-то образом получает ссылку на DS (через args.record() или args.caller().datasource() или еще как). Далее можно передать этот DS в Form2 и обновлять там, или, что лучше, из Form2 вызвать метод класса, который обновит DS.
__________________
Андрей. |
|
05.12.2005, 18:47 | #3 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
Можно по-разному. Класс каким-то образом получает ссылку на DS (через args.record() или args.caller().datasource() или еще как). Далее можно передать этот DS в Form2 и обновлять там, или, что лучше, из Form2 вызвать метод класса, который обновит DS.
1 вариант. Если передавать ссылку args.record() или args.caller().datasource(), то где ее передавать в методе prompt() или до этого? Как я передам ds в form2, мне же нужно в уже открытую текущую форму Form1 передать и именно ее обновить, а не в какую-нибудь новую?(может есть какой нить показательный пример в Аксапте?) 2 вариант. Каким образом я вызову метод из Form2, тем более если нужно обновить DS Form1. PS: Мне кажется произошла путаница с наименованиями. Еще раз Form1 это журнал в котором в gride показываются данные DS Table1, Form2 служит для создания новой записи в Table1, после создания записи нужно обновить Form1 которая не содержит вновь созданную запись. Конечно я могу и кнопку сделать в Form1 нажав на которую пользователь сможет все обновить, но хотелось бы программно сделать. |
|
05.12.2005, 18:32 | #4 |
Участник
|
Можно написать обработчик кнопки ОК формы Form2, в котором указать:
element.args().caller().procсClassName() procсClassName - наименование процедуры обработки в классе. В процедуре procсClassName класса написать похожую конструкцию this.args().caller().procForm1Name() procForm1Name - наименование процедуры обработки в Form1. |
|
05.12.2005, 19:02 | #5 |
Участник
|
Можно вот так:
static void main(Args args) { SysFormRun_doRe sysFormRun_doRe; if (promt()) { run(); } if (args && args.caller()) { sysFormRun_doRe = args.caller(); sysFormRun_doRe.doReread(); } } соответственно на форме, откуда вызывается класс, должен быть реализован метод doReread, который реридит, ресечит датасорс |
|
06.12.2005, 11:04 | #6 |
Участник
|
Цитата:
Сообщение от anf
Можно вот так:
static void main(Args args) { SysFormRun_doRe sysFormRun_doRe; if (promt()) { run(); } if (args && args.caller()) { sysFormRun_doRe = args.caller(); sysFormRun_doRe.doReread(); } } соответственно на форме, откуда вызывается класс, должен быть реализован метод doReread, который реридит, ресечит датасорс |
|
06.12.2005, 11:29 | #7 |
Участник
|
Когда в метод из которого вызывался класс вставил метод см. все заработало.
[PHP public void create(boolean _append = false) { MenuFunction FormBuildWindowCreate; ; FormBuildWindowCreate = new MenuFunction(menuItemDisplayStr(Class1), MenuItemType:isplay); FormBuildWindowCreate.run(); element.doReread(); element.doResearch(); }] Всем спасибо! |
|
06.12.2005, 09:46 | #8 |
NavAx
|
можно так (метод класса):
... FormDataSource formDataSource; if (curSales.isFormDataSource()) // curSales это таблица SalesTable переданная из формы при инициализации класса. { formDataSource = curSales.dataSource(); formDataSource.reread(); formDataSource.refresh(); formDataSource.active(); } Внимание! поскольку передается курсор, то возможны дополнительные спец. эффекты
__________________
И все они создания природы... |
|
06.12.2005, 11:30 | #9 |
Moderator
|
1. DS в классе получаете в какой-угодно момент, лишь бы до открытия формы Form2.
2. В классе создаете метод updateDS(), кот. делает DS.research(). 3. В форме инициализируете переменную типа этого класса (classVar = element.args.caller()), затем в нужный момент вызываете classVar.updateDS(). Извините, не знаю уж как еще разжевать Добавление: запоздал с ответом... Но решение ваше, прямо скажу, с постановкой задачи не имеет ничего общего. Цитата:
...после этого нажимает Ок и нужно обновить данные в первой форме Form1...
__________________
Андрей. Последний раз редактировалось Dron AKA andy; 06.12.2005 в 11:34. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Передача данных из класса в форму | 5 | |||
Как обновить форму, если добавление через кнопку? | 5 | |||
Как обновить открытую форму | 1 | |||
Запустить метод класса | 2 |
|