在timer事件中完成label的滾動

2021-08-25 03:49:43 字數 1360 閱讀 8252

timer1.temer()

dim i as type

a) if label1.left<=0 then i=0

b) if label1.left>=form1.width-label1.width then i=1

c) if i=0 then label1.left =label1.left +20

d)ifi=1 then label1.left =label1.left -20

end sub

在以上的**中,想實現label的來回滾動,但執行結果是:label1在執行到form的右端時,就在此處左右小幅度的晃動,不再往回走。

究其原因在於:在dim i as type 的時候,i的預設值是0,所以label能順利執行c)語句,運動到form的右端,當到右端時滿足了b)語句,此時i=1,於是又執行d)語句,但是timer事件的特點在於能夠隨時間在一定的interval間隔中更新,迴圈timer事件,所以當滿足一定的interval間隔後,就會執行一次timer,重新定義變數i,所以i的預設值又為0了,所以label在上一次到達的位置向右移動……如此迴圈下去,就形成了label在form的右端來回晃動。

怎樣才能讓label1來回在form中來回滾動呢?

解決辦法:

方法1:

把dim i as type 放在窗體模組的通用宣告部分。這樣的好處是i每次都可以保留一下它的值,所以當i=1 時,timer在迴圈時能夠保留上次迴圈i得到的值。這樣,label就能實現來回滾動。

**如下:

dim i as type

timer1.temer()

a) if label1.left<=0 then i=0

b) if label1.left>=form1.width-label1.width then i=1

c) if i=0 then label1.left =label1.left +20

d)ifi=1 then label1.left =label1.left -20

end sub

方法2:

在timer事件中可以宣告i的型別是static型別。這樣也可以保留原來迴圈的值,讓label來回滾動下去。

**如下:

timer1.temer()

static i as type

a) if label1.left<=0 then i=0

b) if label1.left>=form1.width-label1.width then i=1

c) if i=0 then label1.left =label1.left +20

d)ifi=1 then label1.left =label1.left -20

end sub

在SQL中完成Excel中PRODUCT 功能

excel中的product函式將所有以引數形式給出的數字相乘,並返回乘積值。我在計算使用者生存率的時候遇到了乙個問題。具體計算方法見部落格另一篇 如下圖 g列為每個使用者任期的風險率,生存率為所有 1 風險率 的乘積,每乙個後續的生存率等於上乙個生存率值 1減上乙個風險率 在excel中可以使用p...

在C Builder中定義事件

在c builder中,事件是一種委託模型,它是對訊息的封裝。如果你用過vc,你就知道在vc中並不存在什麼事件,而只有訊息處理函式,而在c builder中則是由事件處理函式來負責響應訊息。同是,事件本身也是一指標,它是乙個閉包,通常在c builder中有兩種事件 通知型別事件 即tnotifye...

Spring中的事件監聽, 完成測試

1 事件源 事件物件的產生者,任何乙個eventobject都有乙個 2 事件 登錄檔 當事件框架或元件收到乙個事件後,需要通知所有相關的事件 來進行處理,這個時候就需要有個儲存 的地方,也就是事件 登錄檔。3 事件廣播器 事件廣播器在整個事件機制中扮演乙個中介的角色,當事件發布者發布乙個事件後,就...