2008-09-22 15 views

ответ

0

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

Я бы сделал containerScrollArea класс, который инкапсулирует таймер, метки и прокручиваемый код. Дайте ему метод GetNextMessage, который вы можете переопределить для получения сообщений.

* Put a container on the screen to hold our scroller 
_screen.AddObject("containerScrollArea", "container") 

WITH _Screen.containerScrollArea 
    * Size it 
    .Visible = .t. 
    .Width = 100 
    .Height = 100 

    * Add two labels, one to hold each scrolling message 
    .AddObject("labelScroll1", "Label") 
    .AddObject("labelScroll2", "Label") 

    * This timer will move the labels to scroll them 
    .AddObject("timerScroller", "ScrollTimer") 
ENDWITH 

WITH _Screen.containerScrollArea.labelScroll1 
    * The labels are positioned below the margin of the container, so they're not initially visible 
    .Top = 101 
    .Height = 100 
    .Visible = .t. 
    .WordWrap = .t. 
    .BackStyle= 0 
    .Caption = "This is the first scrolling text, which is scrolling." 
ENDWITH 

WITH _Screen.containerScrollArea.labelScroll2 
    * The labels are positioned below the margin of the container, so they're not initially visible 
    .Top = 200 
    .Height = 100 
    .Visible = .t. 
    .WordWrap = .t. 
    .BackStyle= 0 
    .Caption = "This is the second scrolling text, which is scrolling." 
ENDWITH 

* Start the timer, which scrolls the labels 
_Screen.containerScrollArea.timerScroller.Interval = 100 


DEFINE CLASS ScrollTimer AS Timer 
    PROCEDURE Timer 

     * If the first label is still in view, move it by one pixel 
     IF This.Parent.labelScroll1.Top > -100 
      This.Parent.labelScroll1.Top = This.Parent.labelScroll1.Top - 1 
     ELSE 
      * If the first label has scrolled out of view on the top of the container, move it back to the bottom. 
      This.Parent.labelScroll1.Top = 101 
      * Load some new text here 
     ENDIF 

     IF This.Parent.labelScroll2.Top > -100 
      * If the second label is still in view, move it by one pixel 
      This.Parent.labelScroll2.Top = This.Parent.labelScroll2.Top - 1 
     ELSE 
      * If the second label has scrolled out of view on the top of the container, move it back to the bottom. 
      This.Parent.labelScroll2.Top = 101 
      * Load some new text here 
     ENDIF 
    ENDPROC 
ENDDEFINE 
0

К сожалению, природа моей работы не оставляет мне времени для дурачиться с графикой, но если бы я сделал, я бы изучить с помощью GDI + с VFP. Вот article, чтобы вы начали