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

請教_ASSIGN 與 _ACCESS 方法

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



註冊時間: 2004-12-27
文章: 476


第 1 樓

發表發表於: 星期四 五月 26, 2005 1:45 pm    文章主題: 請教_ASSIGN 與 _ACCESS 方法 引言回覆

於Grid中某些受保護之屬性如ActiveRow, RelativeRow
ActiveColumn, RelativeColumn, 如果能掌控其被存取
之事件, 應該更能掌控Grid, 於是想到試試ActiveRow_ASSIGN
與ActiveColumn_ACCESS, 實測後發現, 可創建以上屬性的
_ACCESS, _ASSIGN 方法, 可是卻都無作用.
敬請先進指導_ACCESS與_ASSIGN使用有何限制 ;
是否有方法達成以上想法.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期四 五月 26, 2005 4:09 pm    文章主題: 引言回覆

from vfp6 help

--------------------------------
新增的 DEFINE CLASS 字尾
DEFINE CLASS 命令加入了兩個字尾 _ACCESS 和 _ASSIGN,可用於建立 Access 和 Assign 方法程序。在函數或程序的名稱後面加入這些字尾,將會為屬性建立一個 Access 或 Assign 方法程序,而且方法程序的名稱與函數或程序相同。

例如,下列範例程式碼便使用 DEFINE CLASS,建立一個名為 MyClass 的自訂類別,而且為該類別建立了一個使用者自定的屬性 MyProperty,然後又使用 PROCEDURE 命令敘述為 MyProperty 建立了一個 Access 方法程序。

在查詢屬性值時,會執行程序中的程式碼 (WAIT WINDOW 'This is the Access method')。而且還會使用 PROCEDURE 命令敘述再為 MyProperty 建立了一個 Assign 方法程序。在試圖更改屬性值時,將會執行程序中的程式碼 (WAIT WINDOW 'This is the Assign method')。

請注意,範例中使用了 LPARAMETERS 命令敘述來接收傳遞到 Assign 方法程序的值,本範例中還展示了如何建立唯讀屬性。

DEFINE CLASS MyClass AS Custom
MyProperty = 100 && A user-defined Property

PROCEDURE MyProperty_ACCESS && Access method
WAIT WINDOW 'This is the Access method ';
+ ' ' + PROGRAM( )
RETURN THIS.MyProperty
ENDPROC

PROCEDURE MyProperty_ASSIGN && Assign method
LPARAMETERS tAssign && Required to accept value
WAIT WINDOW 'This is the Assign method ';
+ ' ' + PROGRAM( )
ENDPROC
ENDDEFINE

下面的範例展示了如何為原始的 Visual FoxPro 屬性加入 Assign 方法程序,並對試圖設定的屬性值執行簡單的驗證。請注意,本範例只建立了一個 Assign 方法程序,並沒有相應的 Access 方法程序。

本例使用 DEFINE CLASS 建立了一個名為 frmMyForm 的 Form 類別,而且使用 PROCEDURE 命令敘述建立了一個名為 Left_ASSIGN 的 Assign 方法程序,在試圖為表單的 Left 屬性指定值時,便會執行 Assign 方法程序中的程式碼。

如果試圖將 Left 屬性值改為負值,將會顯示一條警告訊息,而 Left 屬性值也將保持不變。如果試圖將 Left 屬性值改為非負值,則 Left 屬性值將會被設定成這個值。

DEFINE CLASS frmMyForm AS Form

PROCEDURE Left_ASSIGN && Assign method
LPARAMETERS tAssign && Required to accept value

DO CASE
CASE tAssign < 0 && Left value negative
WAIT WINDOW 'Value must be greater than 0'
OTHERWISE && Left value not negative
THIS.Left = tAssign
ENDCASE
ENDPROC
ENDDEFINE

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期四 五月 26, 2005 4:14 pm    文章主題: 引言回覆

對沒有開放 讀(access)寫(assign)權限的vfp標準物件,
作_access及assign 不知道會不會因此沒有作用.
你舉的例子,
大部分只提供 access 的權限而不提供assign的權限(也就是 read-only),

除非有所謂的 customdatagrid 物件是全部開放的,
否則我有點悲觀.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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