Frage

Kann mich jemand zu etwas Code zeigen könnte / gib mir Ideen, wie ein glatte Scrollen vertikales Zelt für VFP erstellen 8 oder 9?

Jede Hilfe ist willkommen.

War es hilfreich?

Lösung

Hier ist ein schnelles Programm, das Nachricht scrollt. Legen Sie die folgenden in einem prg-Datei und führen Sie es.

Ich würde eine containerScrollArea eine Klasse machen, die den Timer, Etiketten kapselt und Scrolling-Code. Geben Sie ihm GetNextMessage Methode, die Sie überschreiben können, um die Nachrichten abgerufen werden.

* 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

Andere Tipps

Sie können mit rollbare Container

Leider läßt die Art meiner Arbeit mir keine Zeit für mit Grafiken Herumalbern, aber wenn ich es tat ich in mit GDI + aussehen würde mit VFP. Hier ist ein Artikel rel="nofollow Sie beginnen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top