Показать сообщение отдельно
Старый 16.01.2004, 12:39   #8  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Решал я такую задачу. Все можно сделать, и притом из самой формы. Как было правильно замечено, модифицировать дизайн надо перед super() в init(). Работа идет с классом Form form = formRun.form(). Чтобы Аксапта не вылетала, я заранее завел источник данных в форме, а потом подменяю ему таблицу:
PHP код:
    FormBuildDatasource formBuildDatasource;
    ;
    
// Build the selectable grid
    
formBuildDatasource form.dataSource(#DataSourceSelNo);
    
formBuildDatasource.table(subjTableLookup.subjTableId());
    
selDSId formBuildDatasource.id();
    .... 
Следующим шагом добавляем поля в грид (тоже заведен заранее, хотя это и не столь важно):
PHP код:
private FormControlId buildGrid(container           _fields,
                                
FieldId             _selFieldId,
                                
FormControlName     _name,
                                
FormBuildDatasource _datasource)
{

    
FormBuildControl        control;
    
FormBuildGridControl    gridControl;
    
FormControlId           ret;
    
int                     i;

    
gridControl         form.design().control(_name);
    
gridControl.dataSource(_datasource.id());

    for (
1<= conlen(_fields); i++)
    {
        
control gridControl.addDataField(_datasource.id(), conpeek(_fieldsi));

        if (
conpeek(_fieldsi) == _selFieldId)
        {
            
ret control.id();
        }
    }

    return 
ret;

ВСЕ! В моем случае речь идет о lookup-форме, поэтому выполняются магические пассы с "главным" контролом sel[ected]Field.