 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 1 樓
|
發表於: 星期日 五月 17, 2009 8:15 pm 文章主題: vfp 閃爍字 |
|
|
之前曾經看過有人做 commend buttom 滑鼠移過去時字體就會閃爍
今天花了一下午研究 timer 的用法, 終於做成功了, 但我是用最笨的方法
不過我有個小小問題, 想求教一下先進們
以下是在 timer1.timer 的程式:
IF _TIMER &&mouse enter
THISFORM.Label1.ForeColor=RGB(255,0,255)
_TIMER = .F.
ELSE && mouse leave
THISFORM.Label1.ForeColor=RGB(0,0,255)
_TIMER = .T.
ENDIF
問題:
如果有很多 label , 讓如何能自動執行 THISFORM.LabelX.ForeColor=RGB(255,0,255),
例如滑鼠指標移到 Lable2 就會執行 THISFORM.Label2.ForeColor=RGB(255,0,255) |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 2 樓
|
發表於: 星期日 五月 17, 2009 9:39 pm 文章主題: |
|
|
寫在各物件的
mousemove()
mouseleave() _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 3 樓
|
發表於: 星期二 五月 19, 2009 7:56 pm 文章主題: |
|
|
garfield 寫到: | 寫在各物件的
mousemove()
mouseleave() |
我在 mouseenter 裡的程式去啟動 timer
THISform.timer1.Interval=100
_TIMER = .T.
THISFORM.TImer1.Enabled =.T.
但如果有很多 label , 如何可以讓 mouse 移到某個 label 時, timer 會去改變
mouse 目前所在 label 的顏色, 使其閃爍
現在 mouseenter 改成
_loop = .t.
DO WHILE _loop
THISFORM.Label1.ForeColor=RGB(255,0,255)
=INKEY(0.02,"H")
THISFORM.Label1.ForeColor=RGB(0,0,255)
=INKEY(0.02,"H")
ENDDO
THISFORM.Label1.ForeColor=RGB(0,0,255)
現在 mouseleave 改成
_loop = .f.
THISFORM.Label1.ForeColor=RGB(0,0,255)
但是這樣要維護蠻麻煩的 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 4 樓
|
發表於: 星期二 五月 19, 2009 10:27 pm 文章主題: |
|
|
在 thisform.init()
thisform.AddProperty('labelobj')
thisform.AddProperty('oldlabelobj')
thisform.AddProperty('timercount',0)
thisform.timer1.Interval=500
thisform.timer1.enabled = .t.
**
在 thisform.timer1.timer()
if vartype( thisform.labelobj )<> 'O'
if vartype( thisform.oldlabelobj )='O'
thisform.oldlabelobj.ForeColor=RGB(0,0,255) &&--回復內定顏色.
thisform.oldlabelobj =''
endif
return .f.
endif
thisform.timercount = thisform.timercount + 1
if thisform.timercount>2
thisform.timercount = 0
thisform.labelobj.ForeColor=RGB(255,0,255)
else
thisform.labelobj.ForeColor=RGB(0,0,255)
endif
*****
寫在各物件的程式 , 建議用繼承的方式才不用在每一個label 或 button 裡編寫程式.
mousemove()
thisform.labelobj = this
mouseleave()
thisform.oldlabelobj= this
thisform.labelobj = '' _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 5 樓
|
發表於: 星期三 五月 20, 2009 7:14 am 文章主題: |
|
|
garfield 寫到: |
thisform.AddProperty('labelobj')
thisform.AddProperty('oldlabelobj')
thisform.AddProperty('timercount',0)
**
在 thisform.timer1.timer()
if vartype( thisform.labelobj )<> 'O'
*****
寫在各物件的程式 , 建議用繼承的方式才不用在每一個label 或 button 裡編寫程式.
mousemove()
thisform.labelobj = this
mouseleave()
thisform.oldlabelobj= this
|
謝謝大大, 就是這樣,
昨晚有先研究 thisform.AddProperty. 因為看不懂, 所以才會把程式改成那樣
所以您的方法就是繼承嗎?? |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 6 樓
|
發表於: 星期三 五月 20, 2009 9:21 am 文章主題: |
|
|
thisform.AddProperty 是動態增加物件的屬性,
你也可以將它看成在整個form 皆可以使用的區域變數.
跟public及local都不同, 也是書上都沒教的概念.
講繼承有點不貼切,
應該說是 自定class
去查看看 modify class 命令的說明應該可以略知一二. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
ptiger
註冊時間: 2004-02-26 文章: 38
第 7 樓
|
發表於: 星期三 五月 20, 2009 12:59 pm 文章主題: |
|
|
如果有很多 label , 讓如何能自動執行 THISFORM.LabelX.ForeColor=RGB(255,0,255),
大大的方法小弟看不太懂
我 都是土法作業
for i= 1 to 10
_va="thisform.label"+alltrim(str(i))+"."
&_va.forecolor=rgb(255,0,255)
next
ptiger 在 星期四 五月 21, 2009 10:10 am 作了第 1 次修改 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 8 樓
|
發表於: 星期四 五月 21, 2009 9:35 am 文章主題: |
|
|
我寫的程式是只要滑鼠移到某一個 label 就改變它的顏色, 滑鼠離開後就回復顏色,
你想要的功能又是什麼? _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 9 樓
|
發表於: 星期四 五月 21, 2009 11:54 am 文章主題: |
|
|
garfield 寫到: | 我寫的程式是只要滑鼠移到某一個 label 就改變它的顏色, 滑鼠離開後就回復顏色,
你想要的功能又是什麼? |
程式我還沒試, 就是滑鼠移到某個LABEL後, 那個LABEL就會閃爍, 我想應該用您的程式差不多就可以做到了吧
另外請教您那個
if vartype( thisform.labelobj )<> 'O' <==這個 O 是什麼意思 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 10 樓
|
發表於: 星期四 五月 21, 2009 12:07 pm 文章主題: |
|
|
你想要的功能又是什麼? -->問ptiger 的
vartype() 的help 裡面有寫, 請養成查看 help 的好習慣. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
ptiger
註冊時間: 2004-02-26 文章: 38
第 11 樓
|
發表於: 星期四 五月 21, 2009 1:16 pm 文章主題: |
|
|
garfield 寫到: | 你想要的功能又是什麼? -->問ptiger 的
vartype() 的help 裡面有寫, 請養成查看 help 的好習慣. |
阿 不好意思 大大是在問我
先說一下 昨天拋完 沒注意看 怕別人會誤會
今早趕快加了一個字 "我"
土法作業是指 小弟我
之前是用 label 做成房間號碼 選取日期後
將有住人的 標上顏色 超過人數的 再標不同色彩
所以 才有用 for next
然後只要滑鼠移到 label上 顯示區 edit 就標上該房 住房人的姓名
小弟的土法作業就是 寫一段程式碼 然後 貼在 label 的程序上
就這樣
目前沒想要的功能 只是在這 多看 多學 |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 12 樓
|
發表於: 星期五 五月 22, 2009 7:21 am 文章主題: |
|
|
ptiger 寫到: | 如果有很多 label , 讓如何能自動執行 THISFORM.LabelX.ForeColor=RGB(255,0,255),
大大的方法小弟看不太懂
我 都是土法作業
for i= 1 to 10
_va="thisform.label"+alltrim(str(i))+"."
&_va.forecolor=rgb(255,0,255)
next |
我原先是
_label = "thisform.label1.forecolor=rgb(255,0,255)"
&_label
程式不執行
然後_label = "label1"
thisform.&_label.forecolor=rgb(255,0,255)
也是不行
您的方法竟然可以 |
|
回頂端 |
|
 |
pilipala
註冊時間: 2009-05-13 文章: 75
第 13 樓
|
發表於: 星期五 五月 22, 2009 8:35 am 文章主題: |
|
|
引言回覆: |
我原先是
_label = "thisform.label1.forecolor=rgb(255,0,255)"
&_label
程式不執行
然後_label = "label1"
thisform.&_label.forecolor=rgb(255,0,255)
也是不行 |
thisform.ControlCount 搭配 控件的Class屬性,
就可以找出全部label控件,避開使用&。
個人想法,請參考看看~~ ^^ |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 14 樓
|
發表於: 星期五 五月 22, 2009 10:09 am 文章主題: |
|
|
提示一下 巨集用法
&巨集名稱.
後面的那個 . 表示巨集結束的地方
例:
abc='123'
abcd='456'
marconame='abc'
? &marconame
123
? &marconame.d
456
所以
_label = "label1"
thisform.&_label.forecolor=rgb(255,0,255)
要改成
thisform.&_label..forecolor=rgb(255,0,255) _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
goodnight

註冊時間: 2008-10-13 文章: 473 來自: 台南市
第 15 樓
|
發表於: 星期三 五月 27, 2009 1:20 pm 文章主題: |
|
|
garfield 寫到: | 提示一下 巨集用法
&巨集名稱.
後面的那個 . 表示巨集結束的地方
例:
abc='123'
abcd='456'
marconame='abc'
? &marconame
123
? &marconame.d
456
所以
_label = "label1"
thisform.&_label.forecolor=rgb(255,0,255)
要改成
thisform.&_label..forecolor=rgb(255,0,255) |
真是厲害啊, VFP 的秘密真多 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|