CLEAR ALL
CLOSE DATABASES ALL
SET DEFAULT TO (Application.ActiveProject.HomeDir)
Form1 = NEWOBJECT("C_Form") && 從類(lèi)定義中C_Form中生成窗體
Form1.Show && 顯示剛才生成的窗體
READ EVENTS && 激活交互事件
CLOSE DATABASES ALL
CLEAR ALL
RETURN && 程序結束
*-----------------------------
* 程序運行窗體的類(lèi)定義
*-----------------------------
DEFINE CLASS C_Form AS Form
Caption = "自定義按鈕測試" && 窗體標題
WindowState = 2 && 啟動(dòng)時(shí)最大化
ADD OBJECT Grid1 AS Grid && 在窗體中放置一個(gè)Grid
*-------------------------
* 窗體載入內存時(shí)打開(kāi)相關(guān)的數據表
*-------------------------
PROCEDURE Load
USE Table1 IN 0
ENDPROC
*-------------------------
* 窗體從內存中卸載時(shí)關(guān)閉已打開(kāi)的數據表
*-------------------------
PROCEDURE Unload
USE IN Table1
ENDPROC
*-------------------------
* 自定義對窗體的控件進(jìn)行布局的方法
*-------------------------
PROCEDURE Arrange
WITH This.Grid1
.Top = 5
.Left = 5
.Width = ThisForm.Width - .Left - 5
.Height = ThisForm.Height - .Top - 5
ENDWITH
ENDPROC
*-------------------------
* 窗體激活或獲得焦點(diǎn)時(shí)
*-------------------------
PROCEDURE Activate
ThisForm.Arrange
ENDPROC
*-------------------------
* 窗體改變大小時(shí)
*-------------------------
PROCEDURE Resize
ThisForm.Arrange
ENDPROC
*-------------------------
* 關(guān)閉窗體時(shí)釋放交互事務(wù)
*-------------------------
PROCEDURE Destroy
CLEAR EVENTS
ENDPROC
*-------------------------
* 表格的初始化
*-------------------------
PROCEDURE Grid1.Init
WITH This
.RecordSourceType = 1 && 數據源為表別名
.RecordSource = "Table1" && 綁定數據源
WITH .Columns(3) && 對具體數據表中的某列細化
.RemoveObject("Text1") && 移除該欄中內置的TextBox控件
.AddObject("Button1", "GridCommandButton") && 新增自定義控件
WITH .Button1
.ControlSource = "Table1.F03" && 綁定本欄的數據源
.TrueCaption = "Yes" && 修改預定義的文字
.FalseCaption = "No" && 修改預定義的文字
.Width = 60 && 設置控件寬度
.Height = 20 && 設置控件高度
.Visible = .T. && 讓控件可見(jiàn)
ENDWITH
.CurrentControl = "Button1" && 設定本欄的控制控件
.Sparse = .F. && 每次Refresh時(shí)Grid所有行中本欄的數據均刷新
.Width = 60 && 本欄的寬度與新控件匹配
ENDWITH
.RowHeight = 22 && 表格行的高度與新控件匹配
ENDWITH
ENDPROC
ENDDEFINE
*-----------------------------
* 功能:嵌入Grid中的CommandButton,可與邏輯型數據綁定
* 機制:從Container中繼承,構造一個(gè)包含隱藏TextBox和呈現CommandButton的
* 自定義控件。TextBox與平常Grid Cell的一樣綁定數據,把需要提供的
* 數據轉交給CommandButton,以便呈現。
* 注意:數據綁定源須為邏輯型,否則失效或出錯。
*-----------------------------
DEFINE CLASS GridCommandButton AS Container
BorderWidth = 0 && 取消容器的邊框線(xiàn)
*-------------------------
* 自定義屬性
ControlSource = "" && 數據綁定源
TrueCaption = "是" && 當數據值為.T.時(shí)CommandButton的文字
FalseCaption = "否" && 當數據值為.F.時(shí)CommandButton的文字
*-------------------------
*-------------------------
* 內部受保護控件
*-------------------------
ADD OBJECT PROTECTED Text1 AS TextBox WITH Visible = .F.
ADD OBJECT PROTECTED Button1 AS CommandButton
PROCEDURE Width_Assign(tAssign)
This.Button1.Width = tAssign
ENDPROC
PROCEDURE Height_Assign(tAssign)
This.Button1.Height = tAssign
ENDPROC
PROCEDURE ControlSource_Assign(tAssign)
WITH This.Text1
.ControlSource = tAssign
.Value = EVALUATE(tAssign)
ENDWITH
ENDPROC
PROCEDURE Text1.Value_Assign(tAssign)
This.Value = tAssign
WITH This.Parent.Button1
.VisualEffect = IIF(tAssign, 2, 1)
.Caption = IIF(This.Parent.Text1.Value, This.Parent.TrueCaption, This.Parent.FalseCaption)
ENDWITH
ENDPROC
*-------------------------
* 點(diǎn)擊按鈕時(shí)翻轉值的真假
*-------------------------
PROCEDURE Button1.Click
WITH This.Parent.Text1
.Value = !.Value
ENDWITH
ENDPROC
ENDDEFINE
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。