Функция ВывестиТекст()
27.03.2008
13:06
#1
"Здравствуйте, уважаемые. Решила я сделать бегущую строку в форме, залезла в Яндекс, нашла любопытную обработку. Теперь ломаю голову, КАК она работает. Вот исходник:
// ====== А эту функцию можно поместить в глобальном модуле
Функция ВывестиТекст(Конт,ТекстовоеПоле,хрМлСек,Направление=1,Бежать=1,БежатьВСостоянии=0,МенятьЦвет=0)
Перем RGB;
_Заголовок=ТекстовоеПоле.Заголовок();
Если Бежать=1 Тогда
_ПрошлоМиллисекунд=_GetPerformanceCounter();
Если _ПрошлоМиллисекунд-хрМлСек>150 Тогда // Это чтобы при перемещении мыши быстро не скакало
хрМлСек=_ПрошлоМиллисекунд;
Если Направление=1 Тогда // Это влево
_Заголовок=Сред(_Заголовок,2)+Лев(_Заголовок,1);
Иначе //Значит вправо
_Заголовок=Прав(_Заголовок,1)+Сред(_Заголовок,1,СтрДлина(_Заголовок)-1);
КонецЕсли;
Если БежатьВСостоянии=1 Тогда
Состояние(_Заголовок);
КонецЕсли;
ТекстовоеПоле.Заголовок(_Заголовок);
Если МенятьЦвет=1 Тогда
RGB=ТекстовоеПоле.Цвет();
R=Цел(RGB/256/256);
GB=RGB-R*256*256;
G=Цел(GB/256);
B=GB-G*256;
ТекстовоеПоле.Цвет(R+4,G+4,B+4);
КонецЕсли;
КонецЕсли;
Конт.Форма.Обновить();
КонецЕсли;
Возврат """";
КонецФункции
// ======
Процедура ПриНажатииКнопки()
Сообщить("Нажата кнопка");
КонецПроцедуры
// ======
Дело в том, что в диалоге формы НИ В ОДНОМ ЭЛЕМЕНТЕ не прописана функция ВывестиТекст, и я не пойму, из какого места она вызывается. А очень хочется понять.
Если нужно, могу выслать всю обработку, она весит 7 кило в упакованном виде и 35 Кб в развёрнутом.
Спасибо."
// ====== А эту функцию можно поместить в глобальном модуле
Функция ВывестиТекст(Конт,ТекстовоеПоле,хрМлСек,Направление=1,Бежать=1,БежатьВСостоянии=0,МенятьЦвет=0)
Перем RGB;
_Заголовок=ТекстовоеПоле.Заголовок();
Если Бежать=1 Тогда
_ПрошлоМиллисекунд=_GetPerformanceCounter();
Если _ПрошлоМиллисекунд-хрМлСек>150 Тогда // Это чтобы при перемещении мыши быстро не скакало
хрМлСек=_ПрошлоМиллисекунд;
Если Направление=1 Тогда // Это влево
_Заголовок=Сред(_Заголовок,2)+Лев(_Заголовок,1);
Иначе //Значит вправо
_Заголовок=Прав(_Заголовок,1)+Сред(_Заголовок,1,СтрДлина(_Заголовок)-1);
КонецЕсли;
Если БежатьВСостоянии=1 Тогда
Состояние(_Заголовок);
КонецЕсли;
ТекстовоеПоле.Заголовок(_Заголовок);
Если МенятьЦвет=1 Тогда
RGB=ТекстовоеПоле.Цвет();
R=Цел(RGB/256/256);
GB=RGB-R*256*256;
G=Цел(GB/256);
B=GB-G*256;
ТекстовоеПоле.Цвет(R+4,G+4,B+4);
КонецЕсли;
КонецЕсли;
Конт.Форма.Обновить();
КонецЕсли;
Возврат """";
КонецФункции
// ======
Процедура ПриНажатииКнопки()
Сообщить("Нажата кнопка");
КонецПроцедуры
// ======
Дело в том, что в диалоге формы НИ В ОДНОМ ЭЛЕМЕНТЕ не прописана функция ВывестиТекст, и я не пойму, из какого места она вызывается. А очень хочется понять.
Если нужно, могу выслать всю обработку, она весит 7 кило в упакованном виде и 35 Кб в развёрнутом.
Спасибо."
27.03.2008
13:36
#2
1.А нужно рядовому бухгалтеру ваша бегущая строка?
2. Судя по вашим ответам на форуме, такой вопрос больше смахивает на саморекламу.
2. Судя по вашим ответам на форуме, такой вопрос больше смахивает на саморекламу.
27.03.2008
13:45
#3
"1.не рядовому бухгалтеру, а начальнику отдела продаж (моей подруге) - чтоб не скучно было ждать, когда инфа из отчётов, предоставленных др. торговыми нашими точками загрузится в базу. УРДБ не предлагайте - не стоит оно того!
2.Отнюдь. Я на самом деле не понимаю эту обработку. Повторяю, могу выслать файлик - посмотрите, покрутите, а потом говорите о саморекламе. Просто ради интереса, а? А то тож признаетесь в родстве с пекинским поездом? ;)"
2.Отнюдь. Я на самом деле не понимаю эту обработку. Повторяю, могу выслать файлик - посмотрите, покрутите, а потом говорите о саморекламе. Просто ради интереса, а? А то тож признаетесь в родстве с пекинским поездом? ;)"
27.03.2008
19:06
#4
В обработке есть 2 слоя. Во втором слое есть текстовые поля, в которых в качестве формулы задана функция ВывестиТекст(...). ВОт и все 
Только сразу не догадался как на кнопке выводится текст и на нижней надписи. Оказывается в слое "Невидимый" под кнопкой тоже есть текстовое поле (то есть кнопка на переднем плане, а это текстовое поле, в котором функция ВывестиТекст, - на заднем плане). Точно так же и с самой нижней бегущей строкой.
Только сразу не догадался как на кнопке выводится текст и на нижней надписи. Оказывается в слое "Невидимый" под кнопкой тоже есть текстовое поле (то есть кнопка на переднем плане, а это текстовое поле, в котором функция ВывестиТекст, - на заднем плане). Точно так же и с самой нижней бегущей строкой.
Читают тему
(гостей: 1)