  | 
				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 文章: 477
 
  第 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    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 我是置于一个表单内的呀! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |