【问题标题】:Vertical Scrolling Marquee for foxprofoxpro 的垂直滚动选框
【发布时间】:2010-09-12 00:17:12
【问题描述】:

谁能给我一些代码/给我一些关于如何为 VFP 8 或 9 创建平滑滚动垂直选取框的想法?

感谢任何帮助。

【问题讨论】:

    标签: scroll visual-foxpro foxpro marquee


    【解决方案1】:

    不幸的是,我的工作性质让我没有时间玩弄图形,但如果我这样做了,我会考虑将 GDI+ 与 VFP 一起使用。这是一个article 让你开始

    【讨论】:

      【解决方案2】:

      这是一个滚动消息的快速程序。将以下内容放入 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
      

      【讨论】:

        【解决方案3】:

        您可以使用Scrollable Container

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-12
          相关资源
          最近更新 更多