• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      無第三方軟件支持的數(shù)據(jù)庫應用程序開發(fā)

      2014-02-27 01:33:21蔡洪濤田中軒
      武漢工程大學學報 2014年6期
      關鍵詞:響應函數(shù)控件對話框

      蔡洪濤,田中軒

      武漢工程大學機電工程學院,湖北 武漢 430205

      0 引 言

      材料是壓力容器與設備設計過程最重要的參數(shù),它影響到壓力容器與設備的設計、制造、安裝與運行.GB150中提供了眾多材料可供設計選擇[1].這些材料能滿足一般設計要求;但是隨著材料技術的進步,新材料不斷出現(xiàn);國際貿(mào)易使得國外材料的選用也日益頻繁.這些都要求能讓用戶方便地在設備強度計算軟件包中增加新材料、刪除淘汰的老材料.為此軟件包必須提供“用戶材料數(shù)據(jù)庫管理”模塊.其運行界面如圖1所示.

      圖1 用戶材料數(shù)據(jù)庫管理系統(tǒng)界面Fig.1 The interface of user material database management system

      啟動時左邊列表中最后的材料處于選中狀態(tài),右邊則表明該材料的名稱、標準號及材料類型、力學性能等.用戶點擊左邊不同的材料,右邊各項相應做出改變.當點擊“增加”按鈕,則右邊上部各控件清空,下方的表格也消失;當選中“強度數(shù)據(jù)類型”下的任一選項時,又會彈出表格,讓用戶輸入材料力學性能,且表格上方的紅色文字與選項相匹配.當點擊“更新、保存”按鈕,將該材料的各項參數(shù)寫入文件中,并在列表最后增加一行.當點擊“刪除”按鈕時,首先從列表中刪除被選中的一行,然后從文件中刪除這種材料的各項參數(shù),最后將光標移到列表最后一行,右邊顯示該材料的各項參數(shù).

      1 用戶材料數(shù)據(jù)庫管理模塊技術分析及編程思路

      從圖1中可以看出,運行界面是一個有兩個屬性頁的屬性對話框,屬性頁名分別為“用戶材料數(shù)據(jù)操作(1)”和“用戶材料數(shù)據(jù)操作(2)”.第一頁主要由名為“請選擇材料:”的列表控件和4個成組框控件組成,這4個成組框的名稱分別是“材料類型”、“材料類別”、“應力類別”和“強度數(shù)據(jù)類型”;右下角的是兩個CMSFlexGrid型網(wǎng)格控件,都是10行、2列,用于材料在20個不同溫度下的強度值的輸入.第二頁主要由兩個成組框組成,名稱分別是“基于彈性模量的材料分類”和“基于線膨脹系數(shù)的材料分類”.

      CMSFlexGrid網(wǎng)格控件是Visual C++提供的已注冊的ActiveX控件,以表格的形式顯示和操作數(shù)據(jù).該控件在MSDN中有用于VB的詳細的文檔;但是用于VC的說明卻沒有.該控件不具備對網(wǎng)格的編輯功能.給CMSFlexGrid控件添加編輯功能的思路是[2]:設置一個編輯框控件,該控件可以在網(wǎng)格控件移動,并與某個單元格重合,在該編輯框控件中輸入數(shù)據(jù),并將該數(shù)據(jù)寫入單元格中.

      在VC環(huán)境下開發(fā)數(shù)據(jù)庫應用程序一般都要采用第三方軟件如Microsoft Office Access、Microsoft Office Excel、Microsoft Visual FoxPro等形成數(shù)據(jù)文件,然后注冊形成數(shù)據(jù)源[3-4],再通過ODBC、DAO或ADO技術操縱數(shù)據(jù)源以實現(xiàn)對數(shù)據(jù)的管理.本文利用MFC的文件讀寫功能在模塊中形成數(shù)據(jù)文件,不需要第三方軟件的支持.MFC的鏈表類包括CPtrList、CStringList、CobList[5],本文利用CptrList類創(chuàng)建鏈表對象.

      2 用戶材料數(shù)據(jù)庫管理模塊框架的編程實現(xiàn)

      首先啟動VC++6.0,創(chuàng)建一個名為yhmaterial的單文檔工程,該工程視類的基類是CFormView,其余保持默認選項不變.添加兩個對話框資源,其ID分別為IDD_PROPPAGE1和IDD_PROPPAGE2.參照圖1在兩個對話框中添加各控件.對話框IDD_PROPPAGE1中添加各控件后,還要添加一個多余的編輯框控件“Edit”,用于網(wǎng)格控件的編輯化.右下角網(wǎng)格控件的添加方法是點擊工程添加到工程Components and Controls,在彈出的對話框中選擇Registered and ActiveX Controls文件夾,雙擊之,再選擇Microsoft FlexGrid Control,version 6.0,點擊insert按鈕,彈出Confirm Class對話框.選中前面三項,點擊OK.此時在控件工具箱中出現(xiàn)Microsoft FlexGrid Control的圖標.并且在工程的ClassView區(qū)出現(xiàn)剛才選中的三個類:CMSflexGrid、CRowCursor和ColeFont,在工程的FileView區(qū)出現(xiàn)類的頭文件msflexgrid.h、font.h和rowcursor.h及源文件msflexgrid.cpp、font.cpp和rowcursor.cpp.兩次添加Microsoft FlexGrid Control到IDD_PROPPAGE1上.修改其ID分別為IDC_MSFLEXGRID1和IDC_MSFLEXGRID2.參照圖1設置其屬性,并適當調(diào)節(jié)網(wǎng)格控件所占范圍的大小,使得后面設置的網(wǎng)格的高度與寬度既能完全顯示出來,又無黑邊.注意設置四個成組框控件下面第一個控件的“Group”屬性.將列表控件設置為“Report”屬性.為各控件綁定變量,為這兩個對話框資源添加響應的類Cpage1和Cpage2,并創(chuàng)建屬性對話框.

      此時編譯運行,發(fā)現(xiàn)屬性對話框要么完全顯示出來,但是只占整個視區(qū)的一部分,要么占住整個視區(qū),但是只顯示了一部分,多了兩個滾動條,需要滾動才能看到屬性對話框的各個部位.要想將屬性對話框完全嵌入視區(qū),不出現(xiàn)滾動條,可以添加函數(shù)void CYhmaterialView::OnSize(UINT nType,int cx,int cy).

      void CYhmaterialView::OnSize(UINT nType,int cx,int cy)

      {

      CFormView::OnSize(nType,cx,cy);

      propSheet.SetWindowPos(NULL,0,0,cx,cy,SWP_NOACTIVATE);

      CTabCtrl* m_tabctrl=propSheet.GetTabControl( );//

      m_tabctrl->SetWindowPos(NULL,0,0,cx,cy,SWP_NOACTIVATE);//

      CRect rect;CSize size;

      GetClientRect(&rect);//獲取當前客戶區(qū)view大小

      size.cx=rect.right-rect.left;

      size.cy=rect.bottom-rect.top;

      SetScrollSizes(MM_TEXT,size);//將CScrollView的大小設置為當前客戶區(qū)大小

      }

      再次編譯運行,發(fā)現(xiàn)無滾動條,調(diào)節(jié)視區(qū)大小(用鼠標拖動),對話框的尺寸也跟著變化,視區(qū)與對話框大小同步.效果如圖1所示.

      3 用戶材料數(shù)據(jù)庫管理各功能的編程實現(xiàn)

      3.1 網(wǎng)格控件的可編輯化

      編輯網(wǎng)格就是在單擊單元格時能接受用戶的輸入.為此按第二節(jié)的思路進行.首先要響應FlexGrid控件的Click事件.利用類向?qū)г陬怌page1中添加響應函數(shù)void Cpage1::OnClickMsflexgrid1()和void Cpage1::OnClickMsflexgrid2().

      當編輯完成釋放焦點之后,將數(shù)據(jù)寫回單元格.此時應該響應CEdit控件的EN_KILLFOCUS事件.利用類向?qū)砑雍瘮?shù)void Cpage1::OnKillfocusEdit().

      3.2 建立材料參數(shù)結構體

      材料參數(shù)眾多,其中最主要的是材料的力學性能指標.由于各種材料適用的溫度范圍不同,故力學性能的個數(shù)也不同.本章給出的溫度等級數(shù)為20(參考GB150),當材料力學性能溫度等級不夠20時,以0補齊溫度與力學性能.構建如下的結構體:

      struct CAILIAOCANSHU

      {

      CString name;//材料名稱

      CString biaozhun;//材料標準

      double houdumax,houdumin,wendumin,wendumax,cailiaomidu,sigma,qufu;//最小、最大尺寸,最高、最低適用溫度,材料重度,常溫抗拉強度及屈服極限

      int banfou,gangfou,gaoyinglifou,qiangdulei;//材料形式、材質(zhì)類別、應力高低、應力類別

      double yingli[20];//應力等級值

      double wendu[20];//溫度等級值

      };

      材料形式即板材、鍛件等之分;材質(zhì)類別有碳鋼、不銹鋼、銅、鋁及鈦材之分;應力高低即高應力與低應力.GB150對某些材料在同一個溫度下給出了兩種許用應力,應力較高者僅適用于允許產(chǎn)生微量永久變形的元件;對于法蘭或其他有微量永久變形就引起泄漏或故障的場合則采用較低應力以增加元件的尺寸,增加安全可靠性.

      3.3 用戶材料數(shù)據(jù)庫管理模塊啟動功能的實現(xiàn)

      圖1是啟動界面.可以看出啟動時將文件中的各個材料名稱讀入屬性頁的列表控件中,光標處于最后一個材料,并將這個材料的參數(shù)顯示在屬性頁的各個控件中.用戶點擊任意一個材料名稱,則右邊各控件數(shù)據(jù)跟著變化.如果文件為空,或不存在,則顯示空白的界面,即各個控件為空.

      實現(xiàn)思路是:先將網(wǎng)格控件和列表控件初始化;打開文件,將數(shù)據(jù)讀入材料參數(shù)結構體,形成一個鏈結點添加到鏈尾,直到文件讀完.再遍歷鏈表,將每一個結點中對應的材料名稱數(shù)據(jù)及應力類別寫到列表框,并將最后一個材料的參數(shù)寫入各個編輯框中.這些工作可由函數(shù)BOOL Cpage1::OnInitDialog()完成.

      3.4 用戶材料數(shù)據(jù)庫管理模塊各按鈕功能的實現(xiàn)

      “增加”按鈕的功能實現(xiàn).用戶單擊該按鈕時,首先將網(wǎng)格控件隱藏,各控件數(shù)據(jù)清空,將此按鈕變灰,等待用戶輸入數(shù)據(jù),當選擇材料力學性能單選按鈕時,再彈出網(wǎng)格控件,并將網(wǎng)格控件上方的靜態(tài)文本控件的標題做出相應的修改.在Cpage1類中添加“增加”按鈕IDC_BUTTONADD單擊消息響應函數(shù)OnButtonadd().

      在Cpage1類中添加單選按鈕“溫度下許用應力”、“溫度下屈服極限”和“溫度下持久極限”的單擊消息響應函數(shù),以修改網(wǎng)格控件上方的靜態(tài)文本控件的標題.添加WM_CTLCOLOR消息響應函數(shù)HBRUSH Cpage1::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor) ,將靜態(tài)文本標題顏色修改為紅色.

      “更新、保存”按鈕的功能實現(xiàn).首先將用戶輸入的數(shù)據(jù)形成一個結構體,并得到新的鏈節(jié)點添加到鏈尾.此鏈是在函數(shù)OnInitDialog()中形成的.再將新增加的材料名稱及應力類別數(shù)據(jù)寫入列表框的最后面.最后將該材料的數(shù)據(jù)寫入文件末尾;并將本按鈕變灰,恢復“增加”按鈕.

      “刪除”按鈕的功能實現(xiàn).首先在列表框中捕獲用戶要刪除的材料表項,將此表項刪除,然后從鏈表中刪除該材料對應的結點,并從文件中刪除該材料的數(shù)據(jù)(實際上重寫整個文件),并將最后一個結點的材料顯示在各個控件中.

      最后還要添加列表框選中表項改變時的消息響應函數(shù)OnItemchangedList1(),并將對應的材料參數(shù)顯示在各個控件中以便用戶查看瀏覽.

      “更新、保存”按鈕單擊響應函數(shù)程序框圖如圖2所示.

      圖2 “更新、保存”按鈕單擊消息響應函數(shù)框圖Fig.2 The block diagram of message response function clicking update and save button

      4 運行結果及結論

      本模塊的運行界面如圖1所示,在模塊目錄下生成一個文本文件.實踐表明不需第三方軟件的支持也可以進行數(shù)據(jù)庫應用程序的開發(fā).該方法不需要考慮數(shù)據(jù)源,也不需要考慮安裝目錄問題;只有一個運行文件.在數(shù)據(jù)量不太大的情況下,相比需要第三方軟件的數(shù)據(jù)庫開發(fā)方法,該方法簡單、靈活.

      致 謝

      本人在學習MFC編程的過程中得到武漢工程大學計算機科學與工程學院盧濤博士的指點,在此表示衷心的感謝!

      [1] GB150-2011.《壓力容器》[S].北京:中國標準出版社,2003.

      GB150-2011.Pressure Vessels [S].Beijing:Standards Press of China,2003.(in Chinese)

      [2] 王勇,申延平.在Visual C++中實現(xiàn)MSFlexGrid控件的網(wǎng)格編輯功能[J].電腦編程技巧與維護,2001(10):45-47.

      WANG Yong,SHEN Yan-ping.To achieve Mesh editing functionsof MSFlexGrid control in Visual C++ in[J].Computer Programming Skills & Maintenance,2001(10):45-47.(in Chinese)

      [3] 范冠雄.基于Visual C++的數(shù)據(jù)庫訪問技術比較研究[J].計算機與數(shù)字工程,2010,38(1):64-66.

      FAN Guan-xiong.Visual C++ based database access technology comparison[J].Computer & Digital Eng ineering,2010,38(1):64-66.(in Chinese)

      [4] 陳偉亞,劉芳芳.地理信息系統(tǒng)在水污染控制規(guī)劃中的應用[J].武漢工程大學學報,2013,35(1):21-26.

      CHEN Wei-ya,LIU Fang-fang.Application of geographic information system technology in planning of water pollution control[J].Journal of Wuhan Institute of Technology,2010,32(7):9-14.(in Chinese)

      [5] Microsoft Developer Network Library Visual Studio 6.0[EB/OL].http://download.csdn.net/download/medium_ck/3973780.[2012-06-12]

      猜你喜歡
      響應函數(shù)控件對話框
      一類具有Beddington-DeAngelis響應函數(shù)的階段結構捕食模型的穩(wěn)定性
      正?;謴吞摂M機
      Bootlace Worms’Secret etc.
      中學科技(2018年12期)2018-12-19 11:22:28
      關于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      相機響應函數(shù)定標的正則化方法
      克服動態(tài)問題影響的相機響應函數(shù)標定
      秦嶺太白山地區(qū)樹輪寬度對氣候變化的響應
      快速抓取對話框中的完整信息
      電腦迷(2012年22期)2012-04-29 20:30:54
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      在PowerBuUder中利用WinSock控件制作簡單的Web服務器
      红桥区| 珠海市| 神农架林区| 信宜市| 泸定县| 瑞金市| 鄂尔多斯市| 临城县| 梁平县| 云南省| 和顺县| 云林县| 榆树市| 南安市| 高青县| 同仁县| 尉犁县| 荃湾区| 昌宁县| 鄯善县| 青铜峡市| 东乡县| 横山县| 洱源县| 双牌县| 绥芬河市| 陇南市| 临洮县| 阜城县| 靖西县| 绩溪县| 延边| 泗洪县| 湟中县| 桐庐县| 阳泉市| 塘沽区| 嘉义市| 马山县| 乌兰县| 平山县|