乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      在DBGrid組件中顯示和編輯MEMO字段

       獨孤求財 2012-03-12

      在DBGrid組件中顯示和編輯MEMO字段

      ZDNet軟件頻道 時間:2007-10-31 作者:小刀輕舞 | 天極開發(fā) 我要評論()
      本文關(guān)鍵詞:DBGrid組件 顯示 MEMO
      Delphi之所以能在.NET與JAVA“兩座大山”重壓之下,至今仍被廣大編程愛好者喜愛、支持,究其原因,除了VCL框架設(shè)計精妙之外,強大的數(shù)據(jù)庫程序開發(fā)能力也是其長盛不衰的關(guān)鍵因素之一。
      Delphi之所以能在.NET與JAVA“兩座大山”重壓之下,至今仍被廣大編程愛好者喜愛、支持,究其原因,除了VCL框架設(shè)計精妙之外,強大的數(shù)據(jù)庫程序開發(fā)能力也是其長盛不衰的關(guān)鍵因素之一。說到數(shù)據(jù)庫開發(fā)不能不提到DELPHI中自帶的功能強勁的數(shù)據(jù)感知組件,這些組件中最為常用的當(dāng)屬DBGrid組件,這個組件提供了二維表的數(shù)據(jù)顯示方式,一次提供的信息量大、結(jié)構(gòu)鮮明、一目了然。雖然它有這么多優(yōu)點,然而“沒有銀彈”(其大意為沒有一種形式可以解決所有的問題)這句IT界中人所共知的箴言又開始應(yīng)驗了,它有不少缺點,其中一個就是:當(dāng)你開發(fā)一個數(shù)據(jù)庫應(yīng)用程序時,如果所用的數(shù)據(jù)表中帶有MEMO(備注類型)的字段,你會注意到,在DBGrid的缺省顯示方式下,這種類型的字段將顯示成“(MEMO)”的形式(如圖1所示)。MEMO字段類型中數(shù)據(jù)表中的主要功能是存放相對比較大數(shù)量的文本或是文本與數(shù)字的結(jié)合,在大多數(shù)數(shù)據(jù)庫中這種類型的數(shù)據(jù)有規(guī)定的數(shù)量上的限定。


        只能顯示“(MEMO)”這種形式顯然不能夠滿足用戶的需要,為了能夠使得數(shù)據(jù)被實際顯示出來,我們需要寫一些代碼,對DBGrid做一點功能上的增強。首先,我們要先在數(shù)據(jù)庫中建立一張表,命名為TestTable,這張表中至少要有一個MEMO類型的字段,把它命名為Data。然后我們來給字段的OnGetText事件寫一段代碼實現(xiàn)上面的需求。操作步驟如下:

        1. 把你的TDataset組件與剛才新建的數(shù)據(jù)庫中的TestTable表相連接。

        2. 雙擊TDataset組件來打開字段編輯器(Fields editor)。

        3. 添加MEMO字段Data.

        4. 選中該字段,在對象檢查器中(Object Inspector)雙擊OnGetText事件建立事件句柄。

        編寫代碼如下:

      procedure TForm1.DBTableDataGetText(Sender: TField;
      var Text: String;
      DisplayText: Boolean);
      begin
      Text := Copy(DBTableData.AsString, 1, 50);
      end;

        TDataset對象的名字是“DBTable”,MEMO字段的名字是“Data”,因此缺省情況下連接到MEMO字段的TMEMOField名字是“DBTableData”。我們在代碼中告訴DBGrid將MEMO字段顯示成文本方式,就是把實際的內(nèi)容顯示出來。這里有一個值得注意的地方,因為MEMO字段可以容納比較多的文本,在DBGrid中全部顯示出來的話,DBGrid就會被撐得很大,所以我們做了限制,只是把MEMO中的前50個字符顯示出來。(如圖2)


        顯示的工作完成之后,我們還想對顯示出來的文本進(jìn)行編輯,這在缺省狀態(tài)下是不可以實現(xiàn)的,我們準(zhǔn)備另建一個窗體,在上面放置一個DBMEMO組件,用它來對文本進(jìn)行編輯,思考到這里還有一個需要解決的問題,如何來觸發(fā)一次編輯過程呢?就用鍵盤的回車鍵吧,當(dāng)記錄指針指向這條記錄時,按下回車鍵,則彈出一個窗體,上面的DBMEMO組件可以顯示并且編輯文本。實現(xiàn)代碼如下:

      procedure TForm1.DBGrid1KeyDown(
       Sender: TObject;
       var Key: Word;
       Shift: TShiftState);
       begin
        //如果按下的是回車鍵則觸發(fā)下面的代碼
        if Key = VK_RETURN then
        begin
         if DBGrid1.SelectedField = DBTableData then
          //建立新的窗體
          with TMEMOEditorForm.Create(nil) do
          try
           //讀取數(shù)據(jù)庫中的數(shù)據(jù)用DBMEMO顯示
           DBMEMOEditor.Text := DBTableData.AsString;
           ShowModal;
           DBTable.Edit;
           DBTableData.AsString := DBMEMOEditor.Text;
          finally
           Free;
          end;
        end;
       end;

        上面的步驟實現(xiàn)之后,實際的程序運行效果是這樣的(如圖3)。


        動動你的腦筋、理清思路、列出算法,很多知名軟件中的很酷功能我們都能夠來實現(xiàn),各位讀者月友,打開DELPHI,體驗一下吧。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多