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

請問,如何在自定程序PROCEDURE內,更改某一Form所屬的物件內容

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



註冊時間: 2003-11-27
文章: 75


第 1 樓

發表發表於: 星期二 五月 02, 2023 5:02 pm    文章主題: 請問,如何在自定程序PROCEDURE內,更改某一Form所屬的物件內容 引言回覆

請教各位先進,如何在自定程序PROCEDURE內,更改某一Form所屬的物件內容,謝謝。

ABC.scx檔案內容如下

DEFINE CLASS form1 AS form
Top = 301
Left = 737
DoCreate = .T.
Caption = "Form1"
Name = "Form1"

ADD OBJECT command1 AS commandbutton WITH ;
Top = 96, ;
Left = 120, ;
Height = 37, ;
Width = 157, ;
Caption = "ABC", ;
Name = "Command1"
ENDDEFINE

今要在一個呼叫的程序內執行由form1.command1.Caption="ABC"更改為form1.command1.Caption="123",這要怎麼做?

我在程序內試過了下面三個方法都失敗了
方法一:
PROCEDURE _pro1
form1.command1.Caption="123"

方法二:
PROCEDURE _pro1
ABC.command1.Caption="123"

方法三:
PROCEDURE _pro1
ABC.form1.command1.Caption="123"
回頂端
檢視會員個人資料 發送私人訊息
foxy



註冊時間: 2007-08-16
文章: 231
來自: 泰國

第 2 樓

發表發表於: 星期二 五月 02, 2023 7:12 pm    文章主題: 引言回覆

thisform.command1.Caption="123"
_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
小柯



註冊時間: 2003-11-27
文章: 75


第 3 樓

發表發表於: 星期二 五月 02, 2023 7:27 pm    文章主題: 引言回覆

照做使用 thisform.command1.Caption="123"
還是會出現錯誤訊息如下!
錯誤代號:1929
錯誤訊息:THISFORM can only be used within a method.
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 4 樓

發表發表於: 星期三 五月 03, 2023 8:54 am    文章主題: 引言回覆

this.command1.Caption="123"
回頂端
檢視會員個人資料 發送私人訊息
小柯



註冊時間: 2003-11-27
文章: 75


第 5 樓

發表發表於: 星期三 五月 03, 2023 10:34 am    文章主題: 引言回覆

照做使用 this.command1.Caption="123"
還是會出現錯誤訊息如下!
錯誤代號:1929
錯誤訊息:THIS can only be used within a method.
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 6 樓

發表發表於: 星期三 五月 03, 2023 11:44 am    文章主題: 引言回覆

在 Visual FoxPro (VFP) 中,可以使用 SET UDFPARAM TO REFERENCE 設定參數傳遞方式為參考傳遞。這樣可以在自訂程序 (User-Defined Function, UDF) 中更改表單 (Form) 中的物件內容,同時反映到呼叫自訂程序的表單上。

以下是如何在不同表單物件上使用 SET UDFPARAM TO REFERENCE 的範例:

首先,需要定義一個自訂程序,該程序會更改表單上物件的值。例如:

代碼:

FUNCTION ChangeObjectValue(tcObjectName, tcNewValue)
    THISFORM.OBJECTS(tcObjectName).Value = tcNewValue
ENDFUNC


這個自訂程序會接受兩個參數,第一個是欲更改的物件名稱,第二個是欲設定的新值。注意,這個自訂程序是在表單 (Form) 中定義的。

然後,在另一個表單 (Form) 中,需要使用 SET UDFPARAM TO REFERENCE 設定自訂程序參數傳遞方式為參考傳遞,並將表單中物件的參考傳遞給自訂程序。例如:

代碼:

SET UDFPARAM TO REFERENCE
LOCAL loObject
loObject = THISFORM.OBJECTS("ObjectName")
ChangeObjectValue(@loObject, "New Value")


這個程式碼首先使用 SET UDFPARAM TO REFERENCE 將參數傳遞方式設置為參考傳遞。然後,它定義了一個名為 loObject 的變數,該變數存儲了表單中的物件。最後,它將這個物件的參考傳遞給 ChangeObjectValue 自訂程序。

注意,這個程式碼必須在另一個表單 (Form) 中執行,並且必須使用該表單中的物件。如果您需要在其他表單中使用這個程式碼,則需要定義並使用其他表單中的物件。

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

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



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

第 7 樓

發表發表於: 星期三 五月 03, 2023 11:45 am    文章主題: 引言回覆

出問題去打AI

VFP 預設都是 call by value,
所以肯定會出現那個錯誤

那就得換成 call by reference

就是用 SET UDFPARMS TO REFERENCE | VALUE 切換

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

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



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


第 8 樓

發表發表於: 星期三 五月 03, 2023 12:26 pm    文章主題: 引言回覆

試一下
_SCREEN.form1.command1.Caption="123"

_SCREEN.ActiveForm.command1.Caption="123"
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
小柯



註冊時間: 2003-11-27
文章: 75


第 9 樓

發表發表於: 星期三 五月 03, 2023 3:35 pm    文章主題: 引言回覆

感謝各位先進的指教,經測試 _SCREEN.ActiveForm.command1.Caption="123" 這個較簡單的方式可以成功,謝謝。
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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