 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 文章主題: |
|
|
看起來我做的方法好一點. ^_^
但是大同小異啦.
的確可以在 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|