在DBGrid組件中顯示和編輯MEMO字段Delphi之所以能在.NET與JAVA“兩座大山”重壓之下,至今仍被廣大編程愛好者喜愛、支持,究其原因,除了VCL框架設(shè)計(jì)精妙之外,強(qiáng)大的數(shù)據(jù)庫(kù)程序開發(fā)能力也是其長(zhǎng)盛不衰的關(guān)鍵因素之一。 Delphi之所以能在.NET與JAVA“兩座大山”重壓之下,至今仍被廣大編程愛好者喜愛、支持,究其原因,除了VCL框架設(shè)計(jì)精妙之外,強(qiáng)大的數(shù)據(jù)庫(kù)程序開發(fā)能力也是其長(zhǎng)盛不衰的關(guān)鍵因素之一。說(shuō)到數(shù)據(jù)庫(kù)開發(fā)不能不提到DELPHI中自帶的功能強(qiáng)勁的數(shù)據(jù)感知組件,這些組件中最為常用的當(dāng)屬DBGrid組件,這個(gè)組件提供了二維表的數(shù)據(jù)顯示方式,一次提供的信息量大、結(jié)構(gòu)鮮明、一目了然。雖然它有這么多優(yōu)點(diǎn),然而“沒有銀彈”(其大意為沒有一種形式可以解決所有的問(wèn)題)這句IT界中人所共知的箴言又開始應(yīng)驗(yàn)了,它有不少缺點(diǎn),其中一個(gè)就是:當(dāng)你開發(fā)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),如果所用的數(shù)據(jù)表中帶有MEMO(備注類型)的字段,你會(huì)注意到,在DBGrid的缺省顯示方式下,這種類型的字段將顯示成“(MEMO)”的形式(如圖1所示)。MEMO字段類型中數(shù)據(jù)表中的主要功能是存放相對(duì)比較大數(shù)量的文本或是文本與數(shù)字的結(jié)合,在大多數(shù)數(shù)據(jù)庫(kù)中這種類型的數(shù)據(jù)有規(guī)定的數(shù)量上的限定。
只能顯示“(MEMO)”這種形式顯然不能夠滿足用戶的需要,為了能夠使得數(shù)據(jù)被實(shí)際顯示出來(lái),我們需要寫一些代碼,對(duì)DBGrid做一點(diǎn)功能上的增強(qiáng)。首先,我們要先在數(shù)據(jù)庫(kù)中建立一張表,命名為TestTable,這張表中至少要有一個(gè)MEMO類型的字段,把它命名為Data。然后我們來(lái)給字段的OnGetText事件寫一段代碼實(shí)現(xiàn)上面的需求。操作步驟如下: 1. 把你的TDataset組件與剛才新建的數(shù)據(jù)庫(kù)中的TestTable表相連接。 2. 雙擊TDataset組件來(lái)打開字段編輯器(Fields editor)。 3. 添加MEMO字段Data. 4. 選中該字段,在對(duì)象檢查器中(Object Inspector)雙擊OnGetText事件建立事件句柄。 編寫代碼如下:
TDataset對(duì)象的名字是“DBTable”,MEMO字段的名字是“Data”,因此缺省情況下連接到MEMO字段的TMEMOField名字是“DBTableData”。我們?cè)诖a中告訴DBGrid將MEMO字段顯示成文本方式,就是把實(shí)際的內(nèi)容顯示出來(lái)。這里有一個(gè)值得注意的地方,因?yàn)?A title=MEMO href="http://soft./files/list-0-0-108675-1-1.htm">MEMO字段可以容納比較多的文本,在DBGrid中全部顯示出來(lái)的話,DBGrid就會(huì)被撐得很大,所以我們做了限制,只是把MEMO中的前50個(gè)字符顯示出來(lái)。(如圖2)
顯示的工作完成之后,我們還想對(duì)顯示出來(lái)的文本進(jìn)行編輯,這在缺省狀態(tài)下是不可以實(shí)現(xiàn)的,我們準(zhǔn)備另建一個(gè)窗體,在上面放置一個(gè)DBMEMO組件,用它來(lái)對(duì)文本進(jìn)行編輯,思考到這里還有一個(gè)需要解決的問(wèn)題,如何來(lái)觸發(fā)一次編輯過(guò)程呢?就用鍵盤的回車鍵吧,當(dāng)記錄指針指向這條記錄時(shí),按下回車鍵,則彈出一個(gè)窗體,上面的DBMEMO組件可以顯示并且編輯文本。實(shí)現(xiàn)代碼如下:
上面的步驟實(shí)現(xiàn)之后,實(shí)際的程序運(yùn)行效果是這樣的(如圖3)。
動(dòng)動(dòng)你的腦筋、理清思路、列出算法,很多知名軟件中的很酷功能我們都能夠來(lái)實(shí)現(xiàn),各位讀者月友,打開DELPHI,體驗(yàn)一下吧。 |
|
來(lái)自: 獨(dú)孤求財(cái) > 《DELPHI》