VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

vfp 閃爍字
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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)

但是這樣要維護蠻麻煩的
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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. 因為看不懂, 所以才會把程式改成那樣
所以您的方法就是繼承嗎??
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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 是什麼意思
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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)
也是不行

您的方法竟然可以
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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 的秘密真多
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作