FoxPro的垂直滚动选框
时间:2020-03-06 14:32:26 来源:igfitidea点击:
谁能为我指出一些代码/为我提供有关如何为VFP 8或者9创建平滑滚动垂直选框的想法?
任何帮助表示赞赏。
解决方案
我们可以使用可滚动容器
这是一个可以滚动消息的快速程序。将以下内容放入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
不幸的是,我的工作性质使我没有时间去研究图形,但是如果我愿意的话,我会考虑在VFP中使用GDI +。这是一篇文章,可以入门