CloseInterface(0) не закрывает интерфейс

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

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

RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

CloseInterface(0) не закрывает интерфейс

Сообщение RAJAH »

Доброго времени суток!
Кто-нибудь сталкивался? Когда началось - не знаю, недавно патчи декабрьские поставили, может, из-за них. А как теперь закрывать?
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Народ, помогите, горю! Не закрывает даже простейшие фейсы, например:

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

interface vrem
create view as select * from grnal;
browse www
  fields
    grnal.nrec;
end;

handleevent
  cminit:
  {
     closeinterface(0);
  }
end;
end.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Хм. не замечал, у меня вроде всё закрывает...
а если попробовать
CloseInterface(cmDefault);
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Да по-разному пробовал: и CmOK, и CmDefault, и CmCancel... Тут покопался и нашёл http://www.tyumbit.ru/gal_forum/viewtop ... 759bdc4428 - только так закрывается. А почему по-старому не идёт - не знаю. Может, глюк какой...
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

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

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

Сделайте переменную типа VipInterface и после неё напишите new - это автоинициализирует ее.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Сделал , как научили. Ошибка не выскакивает, но переменная adres всё равно пустая! :grin:

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

#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.
Почему?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

в GetFullAddressInd наверное все таки нужно бы запихивать addressn.nrec :)
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Я запихивал persons.liveaddr. Название переменной просто старое осталось. Раньше-то работало, вот что непонятно!..
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Какие ещё мысли будут?
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

закоменте броуз
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Закомментил. Ругнулся при компиляции, что GRNAL нигде не используется, но в adres ничего не закинулось.
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение 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
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Не получилось! Переменная sTmp - пустая. А разве persons.liveaddr не на addressn.nrec ссылается? А с CloseInterface мне alwaysreturn и abort-exit уже помогли...
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

Persons.LiveAddr ссылается на AddressN
в ардэхе вывидите для полноты картины Persons.LIVEADDR
скопируйте не нулевое значение, найдите в AddressN эту запись.
Может у вас просто ссылки не валидные.

alwaysreturn вообщето нужна когда фейс прекращает работу по abort
Ответить