Visual Lisp 程式有個視窗介面是很體面的,事實上程式規模發展到一個階段,也不可能只靠命令列的問答來輸入,Visual Lisp 也提供視窗介面,在 Windows 程式中這種程式分類為 FORM (表單),基本上 VB (VBA) 也是,另外一種就是類似 AutoCAD 或是 WORD 以工作空間為主,搭配選單、工具列、狀態列等等。
如何使用視窗介面,這話說來就長了,首先當然要有對話盒的定義,在
Visual Lisp 中定義會儲存在副檔名為 DCL 檔案中,先不提,先來看看在 VL
中如何呼叫對話盒。
需要幾個函數組合,還是拿型鋼剖面函數作例子
(setq dcl_ID (load_dialog
"HSteelR3.dcl"))
(if( not (new_dialog "HSteelR3" dcl_ID))
(exit)
)
上面程式中將 HSteelR3.dcl
這個檔案載入,並取得對話盒識別代碼 dcl_ID,再來將
HSteelR3.dcl 中定義 HSteelR3 對話盒建立 (換句話一個 DCL 檔可以定義好幾個對話盒),當然如果載入失敗,程式便終止,如果要人性化一點,在執行 (exit) 前可加一句警告,用 (alert) 就可以了。
中間有很多動作,如設定初始值,設定對話盒的反應動作,例如最簡單的,當使用者按下取消,則程式要進行結束動作,這些以後再談。
再來
(start_dialog)
(unload_dialog dcl_ID)
執行到 (start_dialog)
對話盒便出現在 AutoCAD
程式中與使用者互動,最後 (unload_dialog
dcl_ID) 釋放對話盒定義。
程式可一層一層呼叫對話盒,沒記錯可以有八層,不過太多層對話盒會混亂,二至三層對話盒呼叫應該是合理的。
至於 DCL 檔案如何製作,有個不幸的消息,它也跟 Visual Lisp 一樣是用鍵盤敲進去的 (VLIDE 中),我用過
VC++, Matlab, VBA,通通是視覺化操作,拉一拉對話盒就完成了,只能說
XX 比雞腿,對岸有人在搞視覺化這檔事,可惜我拿不到手,不過我要說的是,比起在編寫程式所花的時間,寫寫對話盒定義占的比例並不大。
沒有留言:
張貼留言