首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi DBGrid 實作下拉選單與查找字段完整指南

     編輯:Delphi

數據網格是資料庫應用中最常見的資料輸入與顯示介面,Delphi 的 DBGrid 控件功能強大,支援下拉選單與查找字段編程,且全程可視化操作,無需撰寫任何代碼即可實現。本文將詳細說明如何在 DBGrid 中應用這兩項實用功能,並比較它們的差異。

一、DBGrid 中的下拉選單應用

下拉選單適用於字段值固定的情況,例如職工籍貫、檔案保管期限(永久、長期、短期)等。透過設定 PickList 屬性,使用者可從預設清單中選擇,避免輸入錯誤,同時仍允許自行輸入清單外的值。

實作步驟:

  1. 佈局控件:在表單放置 Table1、DataSource1、DBGrid1、DBNavigator1,屬性設定如下:
    • Table1.Database = sy1,TableName = zgk.dbf(職工信息庫)
    • DataSource1.DataSet = Table1
    • DBGrid1.DataSource = DataSource1
    • DBNavigator1.DataSource = DataSource1
  2. 建立字段:雙擊 Table1,右鍵選「Add Fields」,全選確定。
  3. 修改顯示標籤:在 Object Inspector 中逐一修改字段的 DisplayLabel,如 Table1ZGBH 改為「職工編號」。
  4. 設定 DBGrid 欄位:雙擊 DBGrid1,點擊「Add all Fields」加入所有字段。
  5. 設定下拉清單:在 Columns 編輯器選擇「jg」(籍貫)字段,切換到 Object Inspector,將 PickList.Strings 設為:
    「湖北枝江市、北京市、河南平頂山市、浙江德清市」
  6. 啟用資料集:在 Form1.OnCreate 事件寫入 Table1.Open;
  7. 執行測試:按 F9 執行,點擊籍貫欄位右側按鈕即可彈出下拉選單供選擇。

二、DBGrid 中的查找字段應用

查找字段適用於外鍵關聯情境,例如職工表的「單位編號」對應「單位信息庫」的詳細資料。使用查找字段可直接顯示並選擇「單位名稱」,而非枯燥的編號,直觀且能確保資料完整性。

實作步驟:

  1. 佈局控件:新增 Table2 指向單位庫,屬性設定:
    • Table1.Database = sy1,TableName = zgk.dbf
    • Table2.Database = sy1,TableName = dwk.dbf
    • DataSource1.DataSet = Table1,DBGrid1/DBNavigator1 同前
  2. 建立主表字段:雙擊 Table1,Add Fields 全選,修改 DisplayLabel。
  3. 隱藏外鍵欄位:設定 Table1DWBH.Visible = False。
  4. 新增查找字段:在 Table1 字段編輯器右鍵選「New Field」,建立 Lookup 字段 DWMC,屬性設定:
    • KeyFields = DWBH(主表外鍵)
    • LookupDataSet = Table2(單位表)
    • LookupKeyFields = DWBH(單位表主鍵)
    • LookupResultField = DWMC(單位名稱)
  5. 設定顯示標籤:Table1DWMC.DisplayLabel =「單位名稱」。
  6. 啟用資料集:Form1.OnCreate 寫入 Table1.Open; Table2.Open;
  7. 執行測試:運行時點擊單位名稱欄位,下拉清單自動載入單位庫資料,且限制只能選擇清單內容。

三、下拉選單與查找字段的核心差異

比較項目PickList 下拉選單Lookup Field 查找字段
資料來源手工輸入靜態字串動態關聯另一資料表
輸入限制允許輸入清單外的值僅能選擇來源表現有值
資料完整性較弱強(外鍵約束)
維護彈性需修改代碼或屬性資料表異動即時生效
適用場景固定枚舉值(如性別、狀態)主從表關聯(如客戶、產品、部門)

總結:PickList 適合簡單固定選項,Lookup Field 則是處理主從表關聯的利器,能大幅提升資料輸入的準確性與使用者體驗。兩者皆屬可視化設計,無需撰寫 SQL 或事件代碼,極大降低了開發門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved