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 事件廣播器 事件廣播器在整個事件機制中扮演乙個中介的角色,當事件發布者發布乙個事件後,就...