【发布时间】:2010-09-12 00:17:12
【问题描述】:
谁能给我一些代码/给我一些关于如何为 VFP 8 或 9 创建平滑滚动垂直选取框的想法?
感谢任何帮助。
【问题讨论】:
标签: scroll visual-foxpro foxpro marquee
谁能给我一些代码/给我一些关于如何为 VFP 8 或 9 创建平滑滚动垂直选取框的想法?
感谢任何帮助。
【问题讨论】:
标签: scroll visual-foxpro foxpro marquee
不幸的是,我的工作性质让我没有时间玩弄图形,但如果我这样做了,我会考虑将 GDI+ 与 VFP 一起使用。这是一个article 让你开始
【讨论】:
这是一个滚动消息的快速程序。将以下内容放入 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
【讨论】:
您可以使用Scrollable Container
【讨论】: