Показать сообщение отдельно
Старый 01.06.2004, 12:50   #21  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Пример.
Ладно, поостыл немного... Т.к. данный ресус предназначен не только для филосовских изысканий, ругани и издевательств над башколовами, но и для того, чтобы поделиться опытом, вот маленький пример:

На основной форме при каком-то событии (например, при переходе на определенный tab) должна открываться дополнительная форма. Пример... пожалуй, на EmplTable - люблю её использовать для примеров и экспериментов... ничего важного на тестовой базе не прибъешь

1) Правим подчиненную форму, которая используется для вывода дополнительной информации.
1.1. В init е после удачной инициализации устанавливаем глобальную переменную:
PHP код:
public void init()
{
    
SysGlobalCache          globalCache;
    ;

    
globalCache classFactory.globalCache();

    
// какая - либо инициализация. допустим, выбираем сотрудника, 
    // к которому относиться подчиненная форма. (у которой есть
    // переменная типа EmplTable)
    
if (element.args().dataset() == tablenum(EmplTable))
    {
        
emplTable element.args().record();
    }
    else
    {
        
select firstfast firstonly RecId,EmplId
            from  emplTable
            where emplTable
.UserId == curuserid();
    }

    if (
emplTable.RecId == 0)
        throw 
error(strfmt("@SYS25516",element.name()));

    
super();
    
// если все нормально, то ставим некоторую переменную в true
    
globalCache.set(formstr(EmplTable), 11);

1.2 Не забываем сбросить её по закрытию формы.
PHP код:
public void close()
{
    
SysGlobalCache globalCache;
    ;
    
globalCache.set(formstr(EmplTable), 10);

Теперь на основной форме при вызове подчиненной осуществляем проверку
PHP код:
public void pageActivated()
{
    
Args            args = new Args();
    
FormRun         formRun;
    
SysGlobalCache  globalCache;
    
int             ret;
    ;
    
globalCache classFactory.globalCache();
    
ret globalCache.get(formstr(EmplTable), 10);

    if (
emplTable.EmplId)
    {
        
args.name(formStr(Имя_Дополнительной_Формы));
        
args.record(emplTable);

        
formRun classFactory.formRunClass(args);

        if(
formRun && ret == 0)
        {
            
formRun.init();
            
formRun.run();
            
formRun.wait();
        }
    }

Поправьте, плиз, если чего не так: писалось на скорую руку, правда по мотивам основной модификации.
Удачи!