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

設定 grid.column.text1.dblclick 及 formset 的問題, 請幫忙

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
wsk



註冊時間: 2004-01-14
文章: 51


第 1 樓

發表發表於: 星期四 一月 22, 2009 9:06 am    文章主題: 設定 grid.column.text1.dblclick 及 formset 的問題, 請幫忙 引言回覆

小弟有以下兩個問題, 請各位VFP專家幫忙, 謝謝:

1. 在編程時初始設定 grid1.columncount=1 及 grid1.column1.text1.dblclick 的執行程序, 但真正column數目是要按實際匯入的資料而定, column的數目可能是2,3,4,...... 請問在自動增加的 column.text1.dblclick 內怎樣設定 dblclick 程序?

2. 在一個 formset 內有兩個 form1 及 form2, 在form1 按 左mouse一次 時就會出現 form2, 但如果按了form2右上角的 close 制, 以後再在 form1 按左mouse一次, 就再不會出現 form2. 請問怎麼才可以把 form2 deactivate 不是 release?
回頂端
檢視會員個人資料 發送私人訊息
wsk



註冊時間: 2004-01-14
文章: 51


第 2 樓

發表發表於: 星期一 二月 02, 2009 7:19 pm    文章主題: 引言回覆

請各位大大幫幫忙, 謝謝
回頂端
檢視會員個人資料 發送私人訊息
ruby



註冊時間: 2003-06-03
文章: 25


第 3 樓

發表發表於: 星期三 二月 18, 2009 3:22 pm    文章主題: 引言回覆

第一個我沒有特別的方法,都用最笨的方法,所以就不用提了
第二個,請不要用close功能,另用botton寫入hide,用隱藏form而不是release form,或者在開form1時,先將form2的visible=.f.,要執行再.t.,再用按鍵離開時,再.f.,基本上,在下很少用formset,常使用是直接form1,再利用按鍵進入form2,form2離開,自然會回form1,你可能想把form2的資料搬入form1,才想用formset方法吧,但不用formset也是可以把資料搬回的

_________________
ruby
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
ckp6250



註冊時間: 2004-07-30
文章: 1644


第 4 樓

發表發表於: 星期三 二月 18, 2009 4:20 pm    文章主題: 引言回覆

第一個方法,先新增一個text物件,在這個物件中,把 dblclick 的程式碼寫好
之後的第二,第三個 column , 就用您建好的這個 text物件
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
宏偉軟件



註冊時間: 2009-02-19
文章: 11


第 5 樓

發表發表於: 星期四 二月 19, 2009 9:23 pm    文章主題: 引言回覆

可以用綁定來做
綁定的含義是 將控件添加同意的方法在表格中應用很頻繁

Visual FoxPro 9.0 语言参考
BINDEVENT( ) 函数
相关信息 示例
全部折叠 全部展开
提供当一个事件发生时执行用户代码(一个对象的方法)的能力。

下面语法的第一种形式,可以使用 BINDEVENT( ) 从 Visual FoxPro 本身对象到其它 Visual FoxPro 对象来绑定事件、属性或方法。

下面语法的第二种变化形式。可以绑定到 Windows Message (Win Msg) 事件。

注意:
如果要从 Component Object Model (COM) 对象来绑定到事件,应使用 EVENTHANDLER( ) 函数。
 


 


BINDEVENT(oEventSource, cEvent, oEventHandler, cDelegate [, nFlags])


BINDEVENT(hWnd | 0, nMessage, oEventHandler, cDelegate [, nFlags])


 

参数
oEventSource

指定事件源,它必须是一个有效的 Visual FoxPro 对象。
hWnd

指定接收 Windows 消息窗口的整数句柄。如果传递了一个 0 的值,则指定的事件(nMessage)被所有窗口俘获。可以用 hWnd 属性 (Visual FoxPro) 来绑定通过 _VFP、_SCREEN 和表单实例接收到的 Windows Messages (事件)。ActiveX 控件也有 hWnd 属性。
cEvent

指定要绑定事件、方法或属性的名称。
nMessage

指定要俘获的有效 Windows 消息。关于 Windows 消息的信息,参看 MSDN (the Microsoft Developer Network)。
oEventHandler

指定对象,必须是一个有效的 Visual FoxPro 对象,处理该事件。
cDelegate

指定方法或“代理”,为 oEventHandler 处理该事件。该代理方法必须与 cEvent 中指定的事件有相同的参数。可以调用 AEVENTS( ) 函数来获取引用到该事件源的对象。如果该代理方法没有足够的参数来处理通过该事件传递来的参数,Visual FoxPro 产生一个错误。当俘获的是 Windows Message (Win Msg) 事件时,cDelegate 方法必须包含一个 PARAMETERS 指令来接收传来的四个参数。参数的格式与 Windows WindowProc 函数的格式一致。有关 Windows WindowProc 函数的信息,参看 MSDN (the Microsoft Developer Network)。该方法必须返回一个整数值。
nFlags

指定一个可以为事件绑定操作设置的额外的位标记。当创建一个 Windows 消息事件绑定时,忽略 nFlags 参数。
 
nFlags 位 事件类型 说明
0
000
FoxPro 对象
在事件代码之前调用代理代码。(默认)

1
001
FoxPro 对象
在代理代码之前调用事件代码。

2
010
FoxPro 对象
通过简单方式调用,不触发事件(调用代理代码)。

31
011
FoxPro 对象
在代理代码之前调用事件代码。当简单方式调用发生时,不触发事件(调用代理代码)。

4
100
Windows Message
当用户事件代码在执行时,防止类似事件的递归。

1如果使用一个 3 的 nFlags 值,由方法调用返回到事件的值不是事件的值,更确切地说,是最后被调用的代理的值。该事件在任何代理之前获得调用,因此代理的返回值是堆栈上的残留值。因此,推荐代理方法包含与事件本身相同的返回值。在 Visual FoxPro 中,一个不含有明确 RETURN 指令的过程返回一个固有的真(.T.)值。这只是在如果该事件被方法调用触发而不是通过标准的交互模式或 RAISEEVENT( ) 调用时才产生的问题。下表展示了当 Bit 1 是关或开时一个事件是否被驱动。
 
事件触发器 关 (默认) 开
交互式(Interactive)



编程方式(Programmatic)



RAISEEVENT( )




返回值
数值型。BINDEVENT( ) 返回对象的事件绑定数。

当一个 Windows 消息事件绑定被创建时,BINDEVENT( ) 始终返回 1。没有被执行的错误探查,因此,如果指定了无效的 hWnd 和 nMessage 值,1 仍然被返回并且该绑定保持有效直到被释放。

解释
可以绑定到任何有效 Visual FoxPro 对象的事件、属性或方法,包括 Access 和 Assign 方法。然而,该事件和代理方法必须是公共的,没有被保护或隐藏的类成员。

不能绑定到一个带有被引用传递参数的事件。虽然调用 BINDEVENT( ) 成功,驱动了事件,但使用 RAISEEVENT( ) 失败。

当绑定到一个属性时,应该直接绑定到它而不是到 Assign 方法。如果直接绑定到 Assign 方法,要注意到 Access 和 Assign 方法是标记为 被保护(Protected) 并且在类的外部是不可见的。

注意:
如果绑定到一个拥有 Assign 方法的属性,代理方法可能触发二次。第一次是属性委派调用时产生的。第二次是在 Assign 方法中属性被实际设置到传来的参数时发生的。代理方法应当知道这种可能性。
 


 

一般的继承规则是适用的。如果代理方法不包含任何代码,Visual FoxPro 向上移动到父层次。

当一个事件发生或它被当作一个方法调用时,调用事件处理器。象方法那样调用事件将会触发该事件,除非指定了 2 或 3 的 nFlags 值。

默认情况下,Visual FoxPro 在事件之前调用代理方法。但是,通过使用 nFlags 设置来改变该默认的行为。

如果指定一个属性作为要绑定的事件,Visual FoxPro 绑定该属性到一个隐含的 Assign 方法。当该属性值变化时,Visual FoxPro 触发一个事件。

如果传递了无效的参数,Visual FoxPro 产生错误“函数参数的值、类型或数量无效”。然而,如果在绑定操作期间发生问题,Visual FoxPro 不会产生错误。可以获取 BINDEVENT( ) 的返回值来检查绑定的数量。

特定的控件事件,诸如 GotFocus、LostFocus、InteractiveChange 和 ProgrammaticChange 之类,如果 nFlags 参数的第二位被设置就不工作,例如,nFlags 设置为 2。这些事件在 Visual FoxPro 内部被当作方法调用来处理,即使它们被认为是事件。同样的行为适用于表单上对象的 Refresh 方法,当调用表单的 Refresh 方法时被调用。特定的事件如 When 和 Valid 在事件中需要代码来产生事件。

BINDEVENT( ) 不直接支持 Value 属性,因为它被 Visual FoxPro 以特殊的方式处理。应使用 InteractiveChange 和 ProgrammaticChange 事件代替。此外,ActivePage 属性也不被支持。

如果最初的事件包含一个 NODEFAULT 命令,Visual FoxPro 仍然处理该事件,因为有可能在该事件之前调用代理方法。NODEFAULT 只适用于 Visual FoxPro 本身的事件。

如果精确地重复调用 BINDEVENT( ),Visual FoxPro 忽略该调用但仍然为该对象的事件返回绑定数量。如果改变了 nFlags 设置,可以调用 BINDEVENT( ) 来重新绑定到该事件。

当绑定到 Windows 消息 (Win Msg) 事件时,只有一个到 Windows 消息配对的 hWnd 可以存在。如果想绑定所有窗口到同样的 Windows 消息事件,可以传递一个 0 的 hWnd 值。用 UNBINDEVENTS( ) 函数 和 CLEAR 命令 可以释放 Windows 消息事件绑定。同样,如果用 oEventHandler 参数指定的事件处理器对象不再存在,当它的 Windows 消息发生时,该绑定被释放。

与一个 Windows 消息事件绑定,每当包含模式对话框被显示情节的事件发生时,用户代码就将执行。这是因为 Window Procedure 一定总是处理消息和返回。既然在用户代码执行时可能与事件发生递归,可能想要指定一个 4 的 nFlags 值来阻止它发生。

注意:
应当小心使用 Windows 消息事件绑定,因为绑定到事件的用户代码可能在不希望的时候由 Windows 操作系统和不时发生的事件触发。
 


 

示例
下面的示例展示了如何保持类浏览器(Class Browser)被安置在 Visual FoxPro 桌面的右边,不管桌面如何调整大小。BINDEVENT( ) 用 oHandler 关联 _SCREEN 系统变量或 Visual FoxPro 桌面的 Resize 事件,用 myresize 作为它的代理。当触发 Resize 事件时运行 myresize 代码。

复制程序代码
PUBLIC oHandler
oHandler=NEWOBJECT("myhandler")
DO (_browser)
BINDEVENT(_SCREEN,"Resize",oHandler,"myresize")

DEFINE CLASS myhandler AS Session
PROCEDURE myresize
IF ISNULL(_obrowser) THEN
UNBINDEVENTS(THIS)
ELSE
_obrowser.left = _SCREEN.Width - _obrowser.width
ENDIF
RETURN
ENDDEFINE


相关信息
参考
SYS(2325) - 从 Visual FoxPro 的 WHANDLE 返回 WCLIENTWINDOW
SYS(2326) - 从一个窗口的 hWnd 返回 WHANDLE
SYS(2327) - 从 Visual FoxPro 的 WHANDLE 返回窗口的 hWnd

其他资源
函数
为 Visual FoxPro 对象绑定事件
AEVENTS( ) 函数
RAISEEVENT( ) 函数
UNBINDEVENTS( ) 函数


发送有关本主题的 建议 给微软。© Microsoft 公司版权所有。
简体中文版译者:曾广岷 TLDS_ZGM、E-MAIL:TLDS_ZGM@SOHU.COM

_________________
承接 進銷存、財務軟件,各種企業管理軟件
電話:13075408924
公司網站:www.honwaysoft.com
qq:540072618
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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