Книга знаний

1С:Предприятие

Ловим Фокус.

Все привет! Это опять я. Тема сегодняшнего урока «контроль действий пользователя». Будем следить за тем, куда и почему ходит пользователь по форме нашей обработки.Автор статьи:
Последняя редакция №1 от 27.12.05
URL: http://kb.mista.ru/article.php?id=65

Казалась бы тривиальная задача. Ложем на форму «текст» с вызывающей функцией и все. Но, у всего есть свое «но». Например, такая фишка не секет смену фокуса в ячейках таблицы, в пределах одной строки. Ситуацию спасает принудительное перерисовка формы (за это мне сказал mszsuz, за что ему огромный респект). Но опять получаем «но». Спасать то оно спасает. Если элементу формы было присвоенное, или изменено значение, а если нет, то баста карапузики. Ни чего не происходит. Что не есть гуд.
Решение было получено совершенно случайно. Просто я в этот момент бился с другой бодягой, и мне надо было юзать ОбработкуОжидания. Вот юзая ее мы вместе mszsuz и победили данную проблему.

Решение.

Все как обычно ложем на форму объект «текст». В его формуле его свойств пишем GetAttrib(). В модуле отчета набираем:

//*******************************************
function GetAttrib()
    Name = Form.ActiveControl();
    //  …
    // здесь размещаем код, какой вам надо
    //  …
    Form.Refresh();
endfunction

//*******************************************
procedure Init()
    GetAttrib();
    Form.IdleProcessing("Init", 0);
endprocedure


А в процедуре при открытии формы запускаем процедуру Init. Примерно так:

//*******************************************
procedure OnOpen()
    //  …
    // здесь размещаем код, какой вам надо
    //  …
    Form.IdleProcessing("Init", 1);
endprocedure



Ну, вроде все. Удачи, вам в делах наших тяжких ;))

Санкт-Петербург, Декабрь 2005 года.
skunk

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика