Книга знаний

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

Ловим Фокус.

Все привет! Это опять я. Тема сегодняшнего урока «контроль действий пользователя». Будем следить за тем, куда и почему ходит пользователь по форме нашей обработки.Автор статьи: skunk | Редакторы: aka AMIGO
Последняя редакция №2 от 03.08.10 | История
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

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