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

Delphi 資料瀏覽元件全解析:DBGrid、DBNavigator、DBMemo、DBImage 與資料感知列表框

     編輯:Delphi

一、資料瀏覽元件概覽

位於元件面板 Data Controls 頁,透過 TDataSource 連接 TTable/TQuery,實現資料庫欄位與 UI 控件的雙向繫結。

元件核心功能適用欄位類型
TDBGrid格狀顯示/編輯多筆記錄所有非 BLOB
TDBNavigator記錄導航、編輯狀態控制無 (操作資料集)
TDBText唯讀顯示單一欄位字串、數值、日期
TDBEdit單行編輯單一欄位字串、數值、日期
TDBMemo多行文字/BLOB 文字編輯Memo、BLOB Text
TDBImage圖片/BLOB 圖像顯示編輯Graphic、BLOB Image
TDBListBox下拉選單式欄位選擇字串、數值 (設計期 Items)
TDBComboBox編輯框+下拉清單同上
TDBLookupListBox從關聯表查詢選項 (List)外鍵欄位
TDBLookupComboBox從關聯表查詢選項 (Combo)外鍵欄位

二、共同核心屬性

  • DataSource:指定 TDataSource 名稱
  • DataField:對應資料集欄位名 (TDBGrid/DBNavigator 除外)
  • ReadOnly:True 唯讀,False 可編輯 (預設)
  • Enabled:受 DataSource.Enabled、DataSet.Active 聯動影響

三、TDBGrid 進階應用

1. 欄位編輯器建立永久欄位

  • 控制顯示順序、寬度、標題 (DisplayLabel)、格式 (DisplayFormat/EditFormat)
  • Visible = False 隱藏不需顯示欄位
  • Required = True 強制輸入

2. Options 屬性微調行為

子屬性預設效果
dgEditingTrue允許網格內編輯/新增/刪除
dgTitlesTrue顯示欄位標題列
dgIndicatorTrue左側顯示當前記錄指示箭頭
dgRowSelectFalse整列選取模式
dgConfirmDeleteTrue刪除前彈出確認

3. 關鍵事件

  • OnDrawDataCell:自繪儲存格 (需 DefaultDrawing = False)
  • OnColEnter/OnColExit:進入/離開欄位觸發驗證
  • OnDblClick:雙擊彈出選單 (如國別選擇)

4. 自訂繪製範例:負數紅字顯示

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if (Field.DataType = ftFloat) and (Field.AsFloat < 0) then
  begin
    DBGrid1.Canvas.Font.Color := clRed;
    DBGrid1.DefaultDrawDataCell(Rect, Field, State);
  end;
end;

四、TDBNavigator 按鈕功能與客製化

按鈕動作對應方法
First移至第一筆First
Prior上一筆Prior
Next下一筆Next
Last最後一筆Last
Insert新增空白記錄Insert
Delete刪除當前記錄Delete
Edit進入編輯模式Edit
Post寫入修改Post
Cancel取消修改Cancel
Refresh重新整理顯示Refresh

VisibleButtons 控制顯示哪些按鈕;ShowHint = True 顯示動態提示;Hints 自訂提示文字。

五、TDBMemo / TDBImage 處理 BLOB 資料

  • AutoDisplay = False:不自動載入大量文字/圖片,雙擊才載入,提升游標移動效能
  • 最大 32KB 文字限制 (Memo)
  • 剪貼簿操作需呼叫 CutToClipboard/CopyToClipboard/PasteFromClipboard
  • ReadOnly 控制是否允許編輯

六、資料感知列表框與下拉框

TDBListBox / TDBComboBox (靜態項目)

  • Items 設計期指定選項
  • Style:csDropDown (預設可輸入)、csDropDownList (僅選不可輸入)
  • 僅支援 TTable,不支援 TQuery

TDBLookupListBox / TDBLookupComboBox (動態關聯表)

  • ListSource:關聯表 DataSource
  • ListField:顯示欄位 (可多欄 Field1;Field2)
  • KeyField:關聯鍵值欄位
  • DataField:主表外鍵欄位
  • 自動同步:主表游標移動 → 關聯表定位 → 選項更新

七、多視圖同步顯示同一資料集

規則:多個 DataSource 共用單一 DataSet。

{ Form2 建立時 }
DataSource2.DataSet := Form1.Table1;  // 共用 Form1 的 Table1
{ 兩個表單的 DBGrid/DBEdit 綁定各自 DataSource 即可同步 }

範例專案:C:\Delphi\Demos\DB\TwoForms

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