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

關於addOBJECT()的問題? (本問題已解決 Thanks)

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



註冊時間: 2003-11-04
文章: 69


第 1 樓

發表發表於: 星期六 十月 28, 2006 12:23 pm    文章主題: 關於addOBJECT()的問題? (本問題已解決 Thanks) 引言回覆

(本問題已解決 Thanks)
*******************

請問各位大大:
可以先建立一個視覺化表單,然後在表單內建立一個物件,但此物件要用程式控制來新增,程式如下:

請問可以這樣做嗎? (PS.前提是表單和物作不是用prg來建立) Ans: 不行
請問這個程式要加在表單的何處呢? init 或 Load 試過都出問題! Ans: 不能這樣加

thisform.addOBJECT("grid1","newgrid")

DEFINE CLASS newgrid AS grid
FontSize = 10
DeleteMark = .F.
GridLines = 2
HeaderHeight = 20
Height = 200
ReadOnly = .T.
RowHeight = 20
ScrollBars = 2
Width = 320
HighlightStyle = 2


PROCEDURE When
return !thisform.updmode
ENDPROC


PROCEDURE AfterRowColChange
LPARAMETERS nColIndex
thisform.refresh
ENDPROC


ENDDEFINE
==============================================

之所以要這樣做是因為有很多功能(如圖1,2,3按鈕)要共用一個GRID,但3個按鈕內又要去更動GRID的程序內容,如THISFORM.GRID1.COLUMN1.TEXT1.VALID內的程式要重新定義。

===============================================
但又不想全部用PRG去寫,HELP介紹的都是寫在一個PRG內的如下:

frmMyForm = CREATEOBJECT('Form') && Create a Form

frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1') && Up Cmnd button

frmMyForm.cmdCmndBtn1.Visible =.T. && Up Command button visible

frmMyForm.SHOW && Display the form
READ EVENTS && Start event processing

DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON && Create Command button
Caption = 'Slant \<Up' && Caption on the Command button
Left = 50 && Command button column
Top = 100 && Command button row
Height = 25 && Command button height

PROCEDURE Click
ThisForm.shpLine.Visible = .F. && Hide the Line control
ThisForm.shpLine.LineSlant ='/' && Slant up
ThisForm.shpLine.Visible = .T. && Show the Line control
ENDDEFINE


janlih 在 星期日 十月 29, 2006 1:45 am 作了第 3 次修改
回頂端
檢視會員個人資料 發送私人訊息
jeff25



註冊時間: 2004-10-22
文章: 76
來自: taiwan

第 2 樓

發表發表於: 星期日 十月 29, 2006 12:36 am    文章主題: 引言回覆

你可以在表單上,建立3個不同的 grid,放在相同位置, 利用 visible 的屬性控制,是不是比較簡單?
_________________
jeff
回頂端
檢視會員個人資料 發送私人訊息
janlih



註冊時間: 2003-11-04
文章: 69


第 3 樓

發表發表於: 星期日 十月 29, 2006 1:25 am    文章主題: 引言回覆

jeff25 寫到:
你可以在表單上,建立3個不同的 grid,放在相同位置, 利用 visible 的屬性控制,是不是比較簡單?


很謝謝你的回覆,此問題我已解決了!
你的方法我有想過,只是設定n個grid物件有點麻煩,所以我就沒有用這一個方法

我的方法是先建1個grid物件,大家共用,然後將thisform.grid1.columncount設為最大數 =m (看有幾個資料表要共用,且要顯示的最大欄位數=m)

然後在每個 thisform.grid1.column?.text1.valid 加入判斷資料是否重複的程序如下:
*************************************************
procedure valid:

lcfieldname = alltrim(substr(this.parent.controlsource,at('.',this.parent.controlsource)+1))
if this.value<>oldval(lcfieldname) && 亦可用getfldstate(lcfieldname)=2 && 2 = 欄位已被修改記錄的刪除狀態被改變
if substr(alltrim(thisform.myorder),1,1)=='1' && 1 表示要檢驗欄位值是否為 空白 或 重複
lcdbf = alltrim(this.parent.parent.recordsource)
lcorder = left(lcfieldname,10) && key 最多10碼
return chktag(this.value,gcdatapath+lcdbf,lcorder,alltrim(this.parent.header1.caption))
endif
endif


**********************************
procedure mycommandbutton1.click
thisform.myorder = '10' && '10' (以2進位表示 1檢驗 0不檢驗) 1為第1位表示第1個欄位要檢查valid 0為第2位表示第2個欄位不要檢查valid
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 4 樓

發表發表於: 星期日 十月 29, 2006 8:44 am    文章主題: 引言回覆

看起來我做的方法好一點. ^_^
但是大同小異啦. Very Happy

的確可以在 FORM.INIT 作.
也是利用 Addobject() 沒錯.

屬性比較簡單,
可以runtime設定.

但是event及method就很複雜,
不管是vfp 哪一個版本,event 的code 都必須先寫好在某個procudure 或是 function 中.
不過vfp 7 以前必須靠自訂物件設定.vfp 8 就好一點,可以利用eventbinding設定.

在prg作,可以寫event及method的code,
物件沒有實際建立前,什麼事都能做.
但是form上不能直接寫event及method的code,
因為物件已經生成.
所以書上或參考資料很多都是以prg作完整的物件建立.

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

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

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


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