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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Ale
Сообщения: 9
Зарегистрирован: 19 мар 2008, 12:54
Откуда: Воронеж

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

Сообщение 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

Может кто-нибудь объяснить мне, в чем ошибка?
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Сообщение 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 по этому поводу сказать???
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Возможно в 8-ке посравнению с 7-й поменялся алгорит обзывания компонент. Попробуйте сделать эти поля из випа, далее отконфигурите свой фейс и посмотрите как они будут называтся.
Далее, подправьте в коде названия на такие же, как будут в конфигураторе.
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Сообщение savov »

Попробовал. Название полей формируются также. Не получается ничего.
Ответить