LEADERSOFT.ru Разработка на заказ программ и сайтов
ЕСЛИ БАЗА ВАМ НУЖНА В ЛИДЕРСОФТ ЗАЙДИ СПЕРВА!
Список всех статей ... Подписка на новости (рассылка через subscribe.ru)




































Выпуск 64. Материалы для начинающих (12 урок)

Подписка: "Access 2000 - программирование и готовые решения"
Дата:         09.02.2007
Автор:     Парусников Алексей
Сайт:        http://www.accessoft.ru под редакцией с http://www.leadersoft.ru/
Новые материалы: бегущая строка
На сайте AccesSoft публикуются статьи, посвященые вопросам, связанным с разработкой и продвижением приложений Access. Вы так же можете ознакомиться с готовыми программами, получить исходный код, купить программу, связаться с автором для решения вопроса о доработке программы под Ваши требования.



    
Данная статья ориентирована на начинающих разработчиков Access, желающих более углубленно изучить возможности программирования в Access и сделать свои приложения более профессиональными.

Эффект "бегущая строка".

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

     Идея взята у Андрея Митина. Для начала определимся, что же мы будем выводить в строке. Как вариант – название и версия программы и напоминание о необходимости регистрации. Строки лучше объявить как глобальные константы и переменные в общем модуле. В этом случае, если Вы решите применить эффект бегущей строки в нескольких формах, то для изменения текста строки достаточно будет изменить значения констант.

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

     lab.ForeColor =16711680      ‘  синий цвет

     Для реализации эффекта напишем функцию с двумя параметрами

     Public Function StrAnime(Str As String, lbStr As Label)

     Str – строка, которую выводим
     lbStr – элемент (Label) на форме, в котором выводится строка

     Public Function StrAnime(Str As String, lbStr As Label)
     On Error GoTo Err_
     Const iTrim As Long = 100
   ' максимальная ширина строки (число знаков, включая пробелы)
     Dim sIntStr As String
     Dim i As Long, j As Long
          bStr.TextAlign = 1
     ' выравниваем строку
          sIntStr = Str
          Do While Len(sIntStr) < iTrim
   ' заполняем пробелами начало строки - до макс числа знаков <= 100
               sIntStr = " " & sIntStr
          Loop
          For i = Len(sIntStr) To 1 Step -1
               lbStr.Caption = Mid(sIntStr, i)
     ' здесь собственно и происходит "выдвижение" строки - показываем строку, начиная с последнего символа
               DoEvents    ' передаем управление системе
               j = 1
               Do While j < 1500000
    ' а здесь просто мотыляем счетчик - вариант временной задержки процесса
                    j = j + 1
               Loop
          Next i
          For i = 1 To Len(sIntStr)
   ' строка выползла, теперь ее таким же образом надо убрать
               lbStr.Caption = String(i, " ") & Mid(sIntStr, 1, Len(sIntStr) - i)  ' убираем строку - отсекаем символы
               DoEvents    ' передаем управление системе
               j = 1
               Do While j < 1500000
    ' мотыляем счетчик
                    j = j + 1
               Loop
          Next i
     Exit_:
          Exit Function
     Err_:
          Resume Exit_
     End Function

     Функцию сделали, теперь ее надо запустить. Используем свойство формы – Таймер. Интервал таймера поставим например 500. И вставим процедуру:

     Private Sub Form_Timer()
     On Error GoTo Err_
          Do While True
               lab.ForeColor = 0
               StrAnime NomWers, Me.lab
               lab.ForeColor = 255
               StrAnime StrEnabled, Me.lab
          Loop
     Err_:
          Exit Sub
     End Sub

     Если Вы решите применять рассмотренный эффект, то учтите, что он в какой то мере загружает систему во время «временной задержки» - ведь приходится гонять циклы накрутки. Так же и скорость движения строки зависит от производительности системы: если машина считает быстро, то и строка будет так же летать.

Как все это работает, можно посмотреть здесь…