全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1792
推到 Plurk!
推到 Facebook!

請問DBGird的Focus問題

尚未結案
帥氣銀行
一般會員


發表:13
回覆:40
積分:15
註冊:2005-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-19 17:33:05 IP:59.120.xxx.xxx 未訂閱
大家好 我想請問一下有關DBGrid的Focus問題 DBGrid的RowSelect設為true 如何知道目前DBGrid的Focus是在哪一個Row上? 找了一些資料都是在RowSelect為false時才可用 如SelectedIndex或是SelectedRows 因為我要做到在選取到某一個Row時按下Delete鍵時 可以將此Row整個刪除 我是用TQuery連到DGgrid 還是要在切換Row時讀取該Row的資訊 再到TQuery內去做刪除的動作? -- 第一次在這發問 如有不懂規矩的地方還請大家多多指教
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-19 18:52:42 IP:202.39.xxx.xxx 未訂閱
以下是截自 Delphi 的 help, 您可以參考一下 (重點是 SelectedRows 這個屬性)
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  s: string;
begin
  if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
      for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin              if (j>0) then s:=s ', ';
          s:=s Fields[j].AsString;
        end;
        Listbox1.Items.Add(s);
        s:= '';
      end;
end;
-- hagar.
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-19 20:19:44 IP:211.22.xxx.xxx 未訂閱
插個花! 我的作法是使用一個 >如下範例! < class="code"> if ( DBGrid.SelectedRows.Count > 0 ) then if ( MessageBox(GetActiveWindow(),'確定刪除嗎?','刪除',MB_YESNO or MB_ICONINFORMATION or MB_DEFBUTTON1 ) = IDYES ) then DBGrid.SelectedRows.Delete; ----------------------------------------------- Creation is the fundation of promotion. 發表人 - stallion 於 2005/06/19 20:21:53
帥氣銀行
一般會員


發表:13
回覆:40
積分:15
註冊:2005-05-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-20 10:31:29 IP:59.120.xxx.xxx 未訂閱
首先感謝hagar跟Stallion兩位長官的解答 hagar長官提供的我之前已經測試過了 但要使用SelectedRows這個屬性 必須先把DBGrid Option內的dgRowSelect跟dgMulitSelect設為true才行 若有一個不為true則selectdRows一定會是0 後來我找到另一個解決的方法 就是直接下DBgrid.DataSource.DataSet.Delete這個指令 這樣的話就會自動將目前Active的Row整個刪除 而且這個不管dgRowSelect跟dgMulitSelect是不是true都可以用 但我不知道這樣是否會造成其他問題 還請各位長官指教
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-20 10:52:13 IP:202.39.xxx.xxx 未訂閱
如果您要的功能不複選 record 然後刪除所複選的 record 只是要 Focus(或 Cursor)在哪一筆 record 就刪哪一筆 那您的 DBgrid1.DataSource.DataSet.Delete 這行即可 或者您了解 TDBGrid / TDataSource / TDataset 觀念的話 比方說 DBGrid1 顯示的是 Query1 的 record 的話 那就用 Query1.Delete; 即可 Query1.Delete; 在這個例子就等同於 DBgrid1.DataSource.DataSet.Delete; 了 -- hagar.
系統時間:2024-05-19 17:21:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!