Интерфейс состоит из двух частей: browse и screen, в screen'е задаются условия для фильтрации и две кнопочки "Установить фильтр" и "Снять фильтр". Нужно, чтобы после нажатия на каждую из них курсор оказывался в одной из строк browse. Пишу:
Interface Make_Table;
show at (,,,21);
view
var
usl:string;
as select * from table
bounds UU = usl == table.pole1
order by pole1, pole2;
browse br;
show at (,,,15);
fields
...
end;
screen sc;
show at (,16,,);
fields
...
button
cmSetF;
cmRemF;
end;
HandleEvent:
...
cmSetF: {
PushBounds(tbUU);
if getfirst table = tsOK then {};
selectpanel(tnTable);
rescanpanel(tntable);
}
cmRemF: {
if BoundsActive(tbUU) then {
PopBounds(tbUU);
selectpanel(tnTable);
rescanpanel(tntable);
}
}
...
end;
end.
И что - и ничего. Фокус ввода остается на нажатой кнопке... А мне надо - в текущую строку Browse! Где собака порылась?
Browse brwMain
Show At ... ;
Table myTable;
Fields
....
End;
ну и естественно дополнительные проверки делать при установке фильтра - если не GetFirst то ничего не делать вообще (можно мессагу выдать).
И потом правилом хорошего тона все-таки является запоминание текущей позиции (PushPos) для ее дальнейшего восстановления (PopPos)
А вот не помогло...
Кстати, все проверочки при установке фильтра сделаны, запоминание и восстанвление текущей позиции - тоже. Не держите за лоха последнего Просто не хотелось загромождать код.
так. тогда я видимо некорректно понял задачу.
насколько я теперь понял - нужно принудительно уйти с визуального элемента, где расположена кнопка и перейти в визуальный элемент "таблица" где отображены записи?
если да - тогда попробуйте связку SetFormat ()|SelectFormat() и SelectField() - переключиться на формат и в нем встать на поле.
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен