Страница 1 из 1
DEL работает со второго раза
Добавлено: 27 янв 2012, 10:50
Nikos
Добрый день!
Добавил конфигуратором поле в стандартный интерфейс галактики (сведения об образовании). Сделал поле Protect и PickButton. Выбирает из нужного каталога отлично, а вот отцепляет запись только со второго раза! Т.е. если поле заполнено (есть привязка), то первое нажатие клавиши DEL приводит к визуальному очищению поля, и только повторное очищает поле непосредственно в таблице. Почему так работает? Пытался перехватить cmDelOnProtect и обнулить поле вручную – не реарирует.
Интерфейс предварительно немножко докомпилировал:
Код: Выделить всё
alter interface RECWIN02
create view
as select PlanEducation.name
from synonym Catalogs PlanEducation
where ((EDUCATION.CREF1 == PlanEducation.NREC));
HandleEvent
cmPick:
{
case CurField of
#PLANEDUCATION.NAME :
{
if not isnew()
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
update current EDUCATION;
}
else
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
}
}
end;
inherited::HandleEvent(cmPick);
}
end;
end.
Re: DEL работает со второго раза
Добавлено: 27 янв 2012, 16:37
edward_K
ну а где cmDelOnProtect?
в нем обработку поля нужно также отдельно прописывать - как в Pick.
и updatetable и rescanpanel(#таблица окна) тоже нужно бы сделать
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 10:30
Nikos
сейчас добавил все, что можно (на мой взгляд) - ничего не изменилось. По-прежнему DEL работает только со второго раза, ни одного сообщени ене выдается:
Код: Выделить всё
#component 'Z_STAFF'
alter interface RECWIN02
create view
as select PlanEducation.name
from synonym Catalogs PlanEducation
where ((EDUCATION.CREF1 == PlanEducation.NREC));
HandleEvent
cmPick:
{
case CurField of
#PLANEDUCATION.NAME :
{
if not isnew()
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
update current EDUCATION;
}
else
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
}
}
end;
inherited::HandleEvent(cmPick);
}
cmDelOnProtect:
{
case CurField of
#PLANEDUCATION.NAME :
{
Message('cmDelOnProtect');
}
end;
inherited::HandleEvent(cmDelOnProtect);
}
end;
TableEvent table EDUCATION
cmDelOnProtect:
{
case CurField of
#PLANEDUCATION.NAME :
{
Message('cmDelOnProtect2');
}
end;
Message('cmDelOnProtect3');
inherited::HandleEvent(cmDelOnProtect);
}
cmUpdateRecord:
{
Message('cmUpdateRecord');
update current EDUCATION;
inherited::HandleEvent(cmUpdateRecord);
}
end;
end.
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 11:08
edward_K
message вам в помощь
а вы туда вообще попадаете?
попробуйте перенести из handleevent в
TableEvent table LevelEducation или в какой там у вас панели поле - посмотреть можно например добавляя конфигуратором поле - главная таблица будет красная в списке. Событие табличное.
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 11:36
Nikos
Ничего не получается. Перенес из handleevent в TableEvent table LevelEducation (LevelEducation - красная таблица в списке). Получилось так:
Код: Выделить всё
#component 'Z_STAFF'
alter interface RECWIN02
create view
as select PlanEducation.name
from synonym Catalogs PlanEducation
where ((EDUCATION.CREF1 == PlanEducation.NREC));
HandleEvent
cmPick:
{
case CurField of
#PLANEDUCATION.NAME :
{
if not isnew()
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
update current EDUCATION;
}
else
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
}
}
end;
inherited::HandleEvent(cmPick);
}
end;
TableEvent table LEVELEDUCATION
cmDelOnProtect:
{
case CurField of
#PLANEDUCATION.NAME :
{
Message('cmDelOnProtect1');
}
end;
Message('cmDelOnProtect2');
inherited::HandleEvent(cmDelOnProtect);
}
end;
end.
По-прежнему никаких сообщений не выводится. В то же время cmPick отрабатывает правильно. Может, кто-нибудь знает, почему единичное DEL правильно не работает, а двойное - работает? При этом никаких сообщений не выдается (видимо, cmDelOnProtect не отрабатывает)
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 13:51
edward_K
а да - главная то таблица другая - там времянка заполняется.
попробуйте сразу в delonprotect сообщение вызвать . Еще может быть фишка с перепутанными константами в компиляторе.
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 14:04
Nikos
С delonprotect перепробовал все - никак не реагирует. Константы перепутаны в моем компиляторе? Если да, то подскажите, какой должен было у delonprotect код?
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 15:01
edward_K
у меня в Inc
CONST
cmDelOnProtect = 504;
проверьте - мож перекрыли где.
Re: DEL работает со второго раза
Добавлено: 30 янв 2012, 15:36
Nikos
Как оказалось почему-то Message вообще не работает здесь! Пишу:
Код: Выделить всё
alter interface RECWIN02
create view
as select PlanEducation.name
from synonym Catalogs PlanEducation
where ((EDUCATION.CREF1 == PlanEducation.NREC));
HandleEvent
cmPick:
{
case CurField of
#PLANEDUCATION.NAME :
{
Message('ok');
if not isnew()
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
update current EDUCATION;
}
else
{
RunInterface(GetPlanEdu, PERSONS.NREC, EDUCATION.CREF1);
}
}
end;
inherited::HandleEvent(cmPick);
}
end;
end.
В итоге интерфейс GetPlanEdu вызывается, а сообщение никакое не выдается. Че-то я вообще запутался...