|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
小柯
註冊時間: 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 文章: 232 來自: 泰國
第 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 |
|
回頂端 |
|
|
小柯
註冊時間: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
小賴
註冊時間: 2004-12-27 文章: 471
第 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" 這個較簡單的方式可以成功,謝謝。 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|