2009年3月7日 星期六

如何讓 MSFlexGrid 的 Grid 能像 DataGrid 一樣輸入文字?

這是前幾天在PTT Visual_Basic版看到的網友發問,


他的作業是想要寫一個矩陣計算程式,支援各階矩陣,


所以程式本身必須先能依使用者輸入的階乘數 N ,自動展開 N×N 個格子供使用者輸入每個矩陣元。


 


本來我的想法是:「咦!我好像還沒看過哪本書上有寫到,什麼程式碼可以產生一個物件(如 Textbox)的喔?」


Google 找一找,還真的找不到 -_-,當然,也有可能是關鍵字太難設了,怎麼找都找到一堆不相關的東西,


後來我乾脆放棄這個簡單的想法,想用 DataGrid 或 MSFlexGrid 來完成這個任務,


DataGrid 支援隨時輸入資料到方格里,而且理論上 DataGrid、MSFlexGrid 都支援以程式碼控制其行數與列數的,


(雖然他們本來都只是拿來放資料庫的資料而已 -_-)


不過測試之下,DataGrid 好像不能控制其行、列數,


MSFlexGrid 可以,但卻不能像 DataGrid 一樣任意輸入文字,純粹只能 Show 程式碼裡寫好的東西,


上 Google 找了一下,發現大家都有這個問題,然後大陸網站提供的程式碼...打不開!有的打開了,裡面卻寫一堆似是而非的東西 -_-


最後,我決定在 MSFlexGrid 的 Click 事件設定成跳出 InputBox,並將由 InputBox 獲得的資料,指定給自定義的二維陣列(以座標為index),


要做矩陣計算時,再拿陣列的元素,依矩陣計算方法來做計算的話,應該是再簡單不過了,


哇哈,這樣還真的就成了,


關鍵的 MSFlexGrid Click 事件中,測出 MSFlexGrid 支援提供每個格子的座標,所以就可以依座標、指定每一陣列元素,代表每一格的值了。




註解比程式碼還多..


沒辦法,怕那個發問的網友,想不出怎麼解決問題之外,還要花時間去看懂我寫的鳥程式,好人還是要做到底比較好。


專案檔下載


沒有留言:

張貼留言