Выводим случайные фразы в строку состояния   

В целях разнообразия я придумал простенький механизм для вывода в строку состояния различных крылатых фраз во время ожидания пользователем реакции программы. Это позволяет разрядить напряженную рабочую обстановку, что в конечном счете приводит к повышению эффективности труда (во как загнул).

Для хранения выражений служит справочник «Фразы». Структура его очень проста: пятизначный цифровой код, наименование отсутствует и реквизит «Содержание», типа «Строка» длиной 70.

В глобальном модуле добавлена одна переменная и три маленьких процедуры:

//Генерирование случайных чисел взято по примеру Кайгородова Андрея aka mszsuz
Перем СлучайныйФактор;
//________________________________________________________
//инициализация случайной переменной для использования в дальнейшем

Процедура ПосеятьЧисло()
    Перем ч,м,с;
    ТекущееВремя(ч,м,с);
    СлучайныйФактор=ч*24+м*60+с;
КонецПроцедуры
//________________________________________________________
//функция получения случаного числа от 1 до заданного значения

Функция СлучайноеЧисло(Максимум) Экспорт
    СлучайныйФактор=(13*СлучайныйФактор+13849)%65536;
    Возврат ((СлучайныйФактор%Максимум)+1);
КонецФункции
//________________________________________________________
//Эта процедура получает случайное число от 1 до максимального кода справочника
//а потом показывает в строке состояние строку содержания из элемента с таким кодом.

Процедура глСостояние() Экспорт
    Перем Спр, Колво;
    Спр=СоздатьОбъект("Справочник.Фразы");
    Спр.ПорядокКодов();
    Спр.ОбратныйПорядок(1);
    Колво=0;
    ТекФраза="Тяжела и неказиста жизнь простого программиста!";
    Если Спр.ВыбратьЭлементы()=1 Тогда
        Если Спр.получитьЭлемент()=1 Тогда
            Колво=Число(Спр.Код);
        КонецЕсли;
    КонецЕсли;
    Если Колво>0 Тогда
        ТекНомер=Макс(СлучайноеЧисло(КолВо),1);
        Если Спр.НайтиПоКоду(ТекНомер)=1 Тогда
            ТекФраза=Спр.Содержание;
        КонецЕсли;
    КонецЕсли;
    Состояние(ТекФраза);
КонецПроцедуры

Для правильно работы со случайными числами следует вызов процедуры инициализации случайного значения делать при начале работы системы:

Процедура ПриНачалеРаботыСистемы()
    ПосеятьЧисло();
КонецПроцедуры

Теперь остается вставить перед каждым длительным процессом вызов глобальной процедуры глСостояние(); и готово.

Избранные фразы можно посмотреть здесь. Я специально отбирал не слишком специфические (чтобы некомпьютерщикам было понятно), и чтобы были покороче (иначе они просто не поместятся в строку соcтояния).

 


 

Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").