Страница 1 из 2
CloseInterface(0) не закрывает интерфейс
Добавлено: 29 янв 2009, 11:25
RAJAH
Доброго времени суток!
Кто-нибудь сталкивался? Когда началось - не знаю, недавно патчи декабрьские поставили, может, из-за них. А как теперь закрывать?
Добавлено: 30 янв 2009, 09:21
RAJAH
Народ, помогите, горю! Не закрывает даже простейшие фейсы, например:
Код: Выделить всё
interface vrem
create view as select * from grnal;
browse www
fields
grnal.nrec;
end;
handleevent
cminit:
{
closeinterface(0);
}
end;
end.
Добавлено: 30 янв 2009, 10:55
Алексей
Хм. не замечал, у меня вроде всё закрывает...
а если попробовать
CloseInterface(cmDefault);
Добавлено: 30 янв 2009, 11:57
RAJAH
Да по-разному пробовал: и CmOK, и CmDefault, и CmCancel... Тут покопался и нашёл
http://www.tyumbit.ru/gal_forum/viewtop ... 759bdc4428 - только так закрывается. А почему по-старому не идёт - не знаю. Может, глюк какой...
Добавлено: 30 янв 2009, 16:07
RAJAH
Теперь другая проблема - необработанное исключение и ошибка загрузки объекта:
Код: Выделить всё
#define ComponentVersion
#include AdrFunc.vih
#include AdrFunc.var
interface AdresPoluchit, AlwaysReturn
var
iaddress: AddressFunc;
adres: string;
persnrec: comp;
create view as select * from grnal;
parameters
adres, persnrec;
browse www
fields
grnal.nrec;
end;
handleevent
cminit:
{
adres:=iaddress.GetFullAddressInd(persnrec);
closeinterface(0);
abort;
exit;
}
end;
#undef ComponentVersion
end.
Раньше такое при отсутствии #define выскакивало. А теперь что?
Добавлено: 02 фев 2009, 06:41
Алексей
Сделайте переменную типа VipInterface и после неё напишите new - это автоинициализирует ее.
Добавлено: 05 фев 2009, 10:56
RAJAH
Сделал , как научили. Ошибка не выскакивает, но переменная adres всё равно пустая!
Код: Выделить всё
#define ComponentVersion
#include AdrFunc.vih
#include AdrFunc.var
vipInterface iAdresPoluchit;
interface AdresPoluchit, AlwaysReturn
var
myFace: iAdresPoluchit;
iaddress: AddressFunc;
adres: string;
persnrec: comp;
create view as select * from grnal;
parameters
adres, persnrec;
browse www
fields
grnal.nrec;
end;
handleevent
cminit:
{
myFace:=new(iAdresPoluchit);
adres:=iaddress.GetFullAddressInd(persnrec);
closeinterface(0);
abort;
exit;
}
end;
#undef ComponentVersion
end.
Почему?
Добавлено: 06 фев 2009, 00:22
edward_K
в GetFullAddressInd наверное все таки нужно бы запихивать addressn.nrec

Добавлено: 06 фев 2009, 09:07
RAJAH
Я запихивал persons.liveaddr. Название переменной просто старое осталось. Раньше-то работало, вот что непонятно!..
Добавлено: 09 фев 2009, 11:01
RAJAH
Какие ещё мысли будут?
Добавлено: 09 фев 2009, 16:04
Ged
закоменте броуз
Добавлено: 09 фев 2009, 16:34
RAJAH
Закомментил. Ругнулся при компиляции, что GRNAL нигде не используется, но в adres ничего не закинулось.
Добавлено: 09 фев 2009, 17:52
Ged
так по closeinterface(0) окно же начало закрываться?
а по поводу не вывода см.
edward_K писал(а):в GetFullAddressInd наверное все таки нужно бы запихивать addressn.nrec

вот примерчик:
Код: Выделить всё
#include AdrFunc.vih
interface AdresPoluchit , AlwaysReturn
var
sAdres: string;
cAddrNrec: comp;
#include AdrFunc.var
parameters
sAdres
, cAddrNrec;
handleevent
cmInit:
{
sAdres:=iAdrFunc.GetFullAddressInd(cAddrNrec);
CloseInterface(cmOk);
}
end;
end.
/// протестируем ардэхой
.Form AAA
.Ard
.Var
sTmp:String;
.EndVar
.Create view vPers
As Select * from Persons
;
.{table 'vPers.Persons'
.Begin
sTmp:='';
RunInterface(AdresPoluchit,sTmp,Persons.LIVEADDR);
End.
.Fields
Persons.Tabnmb
Persons.Fio
sTmp
.EndFields
@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ^
.}
.EndForm
Добавлено: 10 фев 2009, 09:32
RAJAH
Не получилось! Переменная sTmp - пустая. А разве persons.liveaddr не на addressn.nrec ссылается? А с CloseInterface мне alwaysreturn и abort-exit уже помогли...
Добавлено: 10 фев 2009, 12:41
Ged
Persons.LiveAddr ссылается на AddressN
в ардэхе вывидите для полноты картины Persons.LIVEADDR
скопируйте не нулевое значение, найдите в AddressN эту запись.
Может у вас просто ссылки не валидные.
alwaysreturn вообщето нужна когда фейс прекращает работу по abort