События нажатия клавиш F7 и F8
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 159
- Зарегистрирован: 28 сен 2005, 19:48
- Откуда: mos
- Контактная информация:
События нажатия клавиш F7 и F8
Как отловить события нажатия клавиш F7 и F8 ???
-
- Постоянный гость
- Сообщения: 86
- Зарегистрирован: 28 апр 2005, 12:15
- Откуда: Москва
-
- Постоянный обитатель
- Сообщения: 159
- Зарегистрирован: 28 сен 2005, 19:48
- Откуда: mos
- Контактная информация:
У меня немного другая проблема.
Я ввожу в поле данные и больше никаких действий не совершаю.
Нажимаю esc, и заполняю поля в таблице из полей в интерфейсе.
Но галактика считает, что в поле в котором были произведены последние изменения осталось прежним.
Я думаю помогла бы какая-нибудь команда перехода на другое поле.
Я ввожу в поле данные и больше никаких действий не совершаю.
Нажимаю esc, и заполняю поля в таблице из полей в интерфейсе.
Но галактика считает, что в поле в котором были произведены последние изменения осталось прежним.
Я думаю помогла бы какая-нибудь команда перехода на другое поле.
-
- Постоянный гость
- Сообщения: 86
- Зарегистрирован: 28 апр 2005, 12:15
- Откуда: Москва
Что ты подразумеваешь под "заполняю поля в таблице"? Вопросы нужно более развернутые делать, если хочешь быстро ответ получить.Sytin писал(а):Я ввожу в поле данные и больше никаких действий не совершаю.
Нажимаю esc, и заполняю поля в таблице из полей в интерфейсе.
Если ты вместо того чтобы поменять данные в буфере отсылаешь обновление в базу, то понятно, почему поле "осталось прежним"...
Вобщем, приведи код для того, что ты подразумеваешь под "заполняю поля".
-
- Постоянный обитатель
- Сообщения: 159
- Зарегистрирован: 28 сен 2005, 19:48
- Откуда: mos
- Контактная информация:
Есть интерфейс с полем ввода. Если в это поле ввести данные, а затем нажать Enter, то поле обновится. Далее значение из этого поля можно использовать в программе. А если ввести данный и нажать esc, то поле не обновляется, и при дальнейший попытке извлечь данные из этого поля, извлекаются старые данные.
Interface RedaktRasp777 'ђҐ¤ ЄвЁа®ў ЁҐ а бЇ®а殮Ёп' AlwaysReturn;
Show at(1,1,82,26);
create view
var
NrecRasp:comp;
RNRasp:string;
RDRasp:date;
RDFrom,RDTo:date;
TypeSelMC:word;
KatMCSpis:string;
GroupMCSpis:string;
VnKlassSpis:string;
as select *
from KatRasp
where ((NrecRasp==KatRasp.nrec));
parameters
NrecRasp;
screen EditRasp;
show at (1,1,80,24);
fields
RNRasp:NoProtect;
RDRasp:NoProtect;
RDFrom:NoProtect;
RDTo:NoProtect;
TypeSelMC:NoProtect;
KatMCSpis:PickButton,Protect;
GroupMCSpis:PickButton,Protect;
VnKlassSpis:PickButton,Protect;
buttons
cmButLookMC;
<<
Ќ®¬Ґа ‚лЇЁб ®
.@@@@@@@@ .@@@@@@@@@
„Ґ©бвўгҐв б .@@@@@@@@@ Ї® .@@@@@@@@@
`‚лЎ®а Њ–`
(.) €§ Є в «®Ј ` .@@@@@@@@@@@@
(.) ѓагЇЇл Њ–` .@@@@@@@@@@@@
(.) ‚Ґи. Є«.` .@@@@@@@@@@@@
<.‘ЇЁб®Є Њ–.>
>>
end;
HandleEvent
cmInit:{
RNRasp:=KatRasp.NRasp;
RDRasp:=KatRasp.DRasp;
RDFrom:=KatRasp.DFrom;
RDTo:=KatRasp.DTo;
TypeSelMC:=0;
SetFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
cmCheckField:{
if (CurField=#TypeSelMC){
case TypeSelMC of
0:{
SetFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
1:{
ClearFieldState(#KatMCSpis,sfVisible);
SetFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
2:{
ClearFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
SetFieldState(#VnKlassSpis,sfVisible);
}
end;
}
}
cmPick:{
if (CurField=#KatMCSpis){
delete SPRASPMC where((NrecRasp==SPRASPMC.cRasp));
RunInterface(SelKatMC777,NrecRasp);
}
if (CurField=#GroupMCSpis){
delete SPRASPMC where((NrecRasp==SPRASPMC.cRasp));
RunInterface(SelGroupMC777,NrecRasp);
}
}
cmCancel:{
PutCommand(cmPositionChanged);
PutCommand(cmUpdateRecord);
CloseInterface(cmDefault);
stop;
}
cmClose:{
PutCommand(cmCancel);
}
cmButLookMC:{
RunInterface(LookMC,KatRasp.nrec);
}
cmUpdateRecord:{
KatRasp.NRasp:=RNRasp;
KatRasp.DRasp:=RDRasp;
KatRasp.DFrom:=RDFrom;
KatRasp.DTo:=RDTo;
update current KatRasp;
}
end;
end.
Interface RedaktRasp777 'ђҐ¤ ЄвЁа®ў ЁҐ а бЇ®а殮Ёп' AlwaysReturn;
Show at(1,1,82,26);
create view
var
NrecRasp:comp;
RNRasp:string;
RDRasp:date;
RDFrom,RDTo:date;
TypeSelMC:word;
KatMCSpis:string;
GroupMCSpis:string;
VnKlassSpis:string;
as select *
from KatRasp
where ((NrecRasp==KatRasp.nrec));
parameters
NrecRasp;
screen EditRasp;
show at (1,1,80,24);
fields
RNRasp:NoProtect;
RDRasp:NoProtect;
RDFrom:NoProtect;
RDTo:NoProtect;
TypeSelMC:NoProtect;
KatMCSpis:PickButton,Protect;
GroupMCSpis:PickButton,Protect;
VnKlassSpis:PickButton,Protect;
buttons
cmButLookMC;
<<
Ќ®¬Ґа ‚лЇЁб ®
.@@@@@@@@ .@@@@@@@@@
„Ґ©бвўгҐв б .@@@@@@@@@ Ї® .@@@@@@@@@
`‚лЎ®а Њ–`
(.) €§ Є в «®Ј ` .@@@@@@@@@@@@
(.) ѓагЇЇл Њ–` .@@@@@@@@@@@@
(.) ‚Ґи. Є«.` .@@@@@@@@@@@@
<.‘ЇЁб®Є Њ–.>
>>
end;
HandleEvent
cmInit:{
RNRasp:=KatRasp.NRasp;
RDRasp:=KatRasp.DRasp;
RDFrom:=KatRasp.DFrom;
RDTo:=KatRasp.DTo;
TypeSelMC:=0;
SetFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
cmCheckField:{
if (CurField=#TypeSelMC){
case TypeSelMC of
0:{
SetFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
1:{
ClearFieldState(#KatMCSpis,sfVisible);
SetFieldState(#GroupMCSpis,sfVisible);
ClearFieldState(#VnKlassSpis,sfVisible);
}
2:{
ClearFieldState(#KatMCSpis,sfVisible);
ClearFieldState(#GroupMCSpis,sfVisible);
SetFieldState(#VnKlassSpis,sfVisible);
}
end;
}
}
cmPick:{
if (CurField=#KatMCSpis){
delete SPRASPMC where((NrecRasp==SPRASPMC.cRasp));
RunInterface(SelKatMC777,NrecRasp);
}
if (CurField=#GroupMCSpis){
delete SPRASPMC where((NrecRasp==SPRASPMC.cRasp));
RunInterface(SelGroupMC777,NrecRasp);
}
}
cmCancel:{
PutCommand(cmPositionChanged);
PutCommand(cmUpdateRecord);
CloseInterface(cmDefault);
stop;
}
cmClose:{
PutCommand(cmCancel);
}
cmButLookMC:{
RunInterface(LookMC,KatRasp.nrec);
}
cmUpdateRecord:{
KatRasp.NRasp:=RNRasp;
KatRasp.DRasp:=RDRasp;
KatRasp.DFrom:=RDFrom;
KatRasp.DTo:=RDTo;
update current KatRasp;
}
end;
end.
уфф... интересный подход
Что-то не пойму, зачем двойной буфер используется?
RNRasp:=KatRasp.NRasp;
...
KatRasp.DRasp:=RDRasp;
update current KatRasp;
Для этого был резон какой-то?
По-моему, ты все усложняешь. Убери свои переменные, убери cmCancel и cmClose и получишь, то, что ты изначально и хотел.
Что-то не пойму, зачем двойной буфер используется?
RNRasp:=KatRasp.NRasp;
...
KatRasp.DRasp:=RDRasp;
update current KatRasp;
Для этого был резон какой-то?
Это произойдет автоматически без всяких дополнительных извратов, например в cmCancel )))Sytin писал(а): Я вызываю интерфейс, редактирую поле, и нажимаю esc.
Как сделать, чтобы отредактированное поле проапдейтилось перед закрытием интерфейса???
По-моему, ты все усложняешь. Убери свои переменные, убери cmCancel и cmClose и получишь, то, что ты изначально и хотел.