 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
MORNING
註冊時間: 2006-01-04 文章: 12
第 1 樓
|
發表於: 星期一 一月 16, 2006 3:18 pm 文章主題: [求助]哪位大侠能帮我审一下这段有关类的代码 |
|
|
这是一段本人下载的有关动感效果按扭的类代码,本人按原代码测试了一下,出现了几个错误提示:1,locontrol不是一个对象 2,找不到属性controls
有哪位高手能指教一下吗?该怎么样修改?谢谢!
DEFINE CLASS newcmd AS container
Width = 24
Height = 24
BackStyle = 0
BorderWidth = 0
Name = "newcmd"
*在容器中添加命令按钮
ADD OBJECT command1 AS commandbutton WITH ;
Top = 0, ;
Left = 0, ;
Height = 24, ;
Width = 24, ;
*命令按钮的picture属性值要与图像的此属性值相同
Picture = "wizards\graphics\new.bmp", ;
Caption = "", ;
*将命令按钮类visible设置为F,使其在创建时不可见,由用户鼠标移动时,来激发图像控件的mousemove事件代码来设置为T,使其显示。
Visible = .F., ;
SpecialEffect = 1, ;
ColorSource = 0, ;
Name = "Command1"
*添加图像控件用于控件按钮的初始画面
ADD OBJECT image1 AS image WITH ;
*此属性值要与命令按钮的picture值相同
Picture = "wizards\graphics\new.bmp", ;
BackStyle = 0, ;
BorderStyle = 0, ;
Height = 20, ;
Left = 4, ;
Top = 4, ;
Width = 20, ;
Name = "Image1"
*注意:在将命令按钮控件与图像控件添加到容器中时将两者的picture 属性设置同一图像文件,将二者的图像层叠起来,看不出破绽。
PROCEDURE image1.MouseMove
*Image1.MouseMove()事件
*功能:1 当鼠标移动到工具栏上当前图象对象上时,利用循环对工具栏中每个容器中的控件进行判断;
* 显示当前容器对象中的按钮,隐藏当前图象对象;而工具栏中其它容器中的对象与此反之。
*调用点:系统自动调用。
*语法:objectname.mousemove()(调试时使用)
*参数:无
*说明:如果你在此类的派生子类或对象中的mousemove中添加代码,请在代码中加入DODEFAULT()以保证
*它的派生子类或对象执行此过程。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
local loobject,locontrol
*定义局部变量
*loobject:对象型;为工具栏的controls属性(对象数组)中的元素(注:controls为包含在工具栏对象中的控件)
*locontrols:对象型;为当前工具栏控件loobject(容器对象)中controls属性(对象数组)中的元素。
*利用循环将工具栏controls对象数组中的每个对象进行判断
for each loobject in this.parent.parent.controls
*如果工具栏中的当前控件为容器类(container)且此容器类对象为当前图象对象的容器
if (lower(loobject.baseclass)='container') and (loobject.name=this.parent.name)
*隐藏当前图象对象
this.visible=.f.
*显示当前容器中的命令按钮
this.parent.command1.visible=.t.
*以上两步达到鼠标移动到工具栏上当前图象上时突出按钮的效果
*继续下次循环
loop
else
*当鼠标从工具栏中的一个按钮移动到另一个按钮时,将突出的按钮恢复原样。
for each locontrol in loobject.controls
*如果locontrol为图象类(Image)控件
if (locontrol.baseclass=this.baseclass)
* 显示非当前容器中的图象控件
locontrol.resettodefault('visible')
else
*locontrol为命令按钮类(commandbutton)控件
*隐藏非当前容器中的命令按钮控件
locontrol.resettodefault('visible')
endif
endfor
endif
endfor
ENDPROC
ENDDEFINE |
|
回頂端 |
|
 |
小賴
註冊時間: 2004-12-27 文章: 476
第 2 樓
|
發表於: 星期一 一月 16, 2006 4:08 pm 文章主題: |
|
|
無可奉告 !
因為執行起來未發生錯誤 ....
你必須把這類別置於其他Container內才可(簡單一點就直接置於FORM內)
例如 ..
AA = CREATEOBJECT("FORM")
AA.AddOBJECT("NEW1", "NewCmd")
AA.NEW1.Visible = .T.
AA.SHOW
READ EVENTS |
|
回頂端 |
|
 |
MORNING
註冊時間: 2006-01-04 文章: 12
第 3 樓
|
發表於: 星期一 一月 16, 2006 7:39 pm 文章主題: |
|
|
我是置于一个表单内的呀! |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|