2008-09-22 46 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讓你開始吧