Страница 1 из 1

еще вопрос о динамическом кол-ве полей в browse

Добавлено: 16 июл 2008, 15:12
Ale
Добрый день!
Уважаемый San писал в топике "Динамическое кол-во полей в browse" текст интерфейса для примера:

Код: Выделить всё

interface testcfg;
table struct t1
(
p1 : string,
p2 : double,
p3 : double
);
create view from t1;
browse br1;
show at(,,,20);
table t1;
fields
t1.p1 'name field' : [10],protect;
end;
screen scr1
show at(,21,,);
buttons
cmok;
<<
<.ok.>
>>
end;
handleevent
cminit:
{
t1.p1 := 'запись 1';
t1.p2 := 111;
insert current t1;
t1.p1 := 'запись 2';
t1.p2 := 222;
insert current t1;
}
cmok:
{
cfsSetCurrentContainer('testcfg');
var p2self : longint;
cfsCreateObject('Column','BR1','newpole',false,p2self);
cfsSetProp('newpole', 'Title', 'new pole');
cfsSetProp('newpole', 'FieldName','t1.p2');
rescanpanel(#t1);
}
end;
end.

Я скомпилировал код в Галактике 8.1,
но при запуске, при нажатии кнопки ОК, получаю сообщение об ошибке:

Runtime error 216 (rtl: попытка обращения к некорректному дескриптору) in atlantis.rtl at 00002D4D

Может кто-нибудь объяснить мне, в чем ошибка?

Добавлено: 21 авг 2008, 19:00
savov
У меня в 7 работает так:
interface Mytest;
table struct t1
(
f1 : string,
p2 : double,
p3 : double
);
create view
as select * from t1;



handleevent
cminit:
{
insert t1 set t1.f1='запись 1', t1.p2 := 111 ;
insert t1 set t1.f1='запись 2', t1.p2 := 222 ;
}
end;


Panel P1;
table t1

browse br1 'Browse';
show at(,,,20);
table t1;
fields
t1.f1 'name field' : [10],protect;
end;

screen scr1 'screen'
show at(,21,,);
buttons
cmok;
<<
<.ok.>
>>
end;

handleevent
cmok:
{
cfsSetCurrentContainer('Mytest');
var p2self, err, aself : longint;
var acontainer, afullname, aobjtype: string;
cfsSetProp('Mytest', 'Title', 'Интерфейс');
err:=cfsGetObjInfo('c_BR1_T1.f1_name_field', aFullName, aSelf, aContainer, aObjtype);
err:=cfsCreateObject('Column','BR1','c_BR1_t1.p2',false,p2self);
cfsSetProp('c_BR1_T1.f1_name_field', 'Title', 'Поле');
cfsSetProp('c_BR1_t1.p2', 'Title', 'Поле2');
Message(err+' '+afullname+' '+acontainer+' '+aObjtype,0);
rereadrecord(#t1);
}
end;

end;

НО в 8 это не работает, идет ошибка! Кто и что может про 8 по этому поводу сказать???

Добавлено: 22 авг 2008, 05:50
Алексей
Возможно в 8-ке посравнению с 7-й поменялся алгорит обзывания компонент. Попробуйте сделать эти поля из випа, далее отконфигурите свой фейс и посмотрите как они будут называтся.
Далее, подправьте в коде названия на такие же, как будут в конфигураторе.

Добавлено: 22 авг 2008, 11:44
savov
Попробовал. Название полей формируются также. Не получается ничего.