Delphi 的TDBGrid 控 件 主 要 用 來 處 理 數 據 表, 它 的 屬 性 中 有
一 個dgMultiSelect, 若 此 屬 性 設 定 為TRUE, 則 可 以 選 中 多 個 記 錄
( 可 用CTRL + 鼠 標 左 鍵 選 擇 多 個 記 錄)。 對 選 中 的 多 個 記 錄
可 以 有 以 下 幾 種 處 理 方 式, 比 較 簡 單 的 兩 種 是: 清 除 所 有
的 選 擇 記 錄 可 用DBGrid1.SelectedRows.Clear 語 句; 刪 除 所 有 的 選
擇 記 錄 可 用DBGrid1.SelectedRows.Delete 語 句。 但 如 果 想 獲 得 選 中
的 所 有 記 錄 的 其 他 信 息, 比 如, 在 單 獨 的 一 個 窗 體 中 顯 示
用 戶 選 擇 的 記 錄 的 第 一 個 字 段 的 內 容( 如 所 有 選 擇 的 姓 名)
如 何 處 理 呢 ? 這 就 要 使 用 書 簽 功 能 了, 下 面 是 筆 者 編 寫 的
一 個 程 序 中 的 過 程, 用 來 將 用 戶 選 擇 的 多 個 記 錄 集 中 顯 示
在 另 外 一 個 窗 體 中( 筆 者 使 用 的 是Delphi4), 供 參 考 使 用。
procedure GetSelectedRecord
(DataSet : TDataSet; FIEldName : String;
BookmarkList : TBookmarkList; Strings : TStrings);
file://這個過程中的參數分別為:數據表、字段名稱、
書簽、用來保存所選字段內容的
file://字符串(用於將內容傳遞到另
一個單獨窗體中的TLIST控件中)
var
I: Integer;
bm : TBookMark;
begin
Strings.Clear;
with Dataset do begin
DisableControls;
bm := GetBookMark;
try
file://每個選擇的記錄都有一個書簽標志,
這就為處理它們提供了條件
for I := 0 to BookmarkList.Count - 1 do begin
Bookmark := BookmarkList[I];
Strings.Add(DataSet.FindField(fIEldname).AsString);
end;
finally
GotoBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
end;
end;
調用舉例:
GetSelectedRecord(Table1, 'NAME', DBGrid1.SelectedRows,
Form2.ListBox1.Items