Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
各位Delphi迷大家好,scorpio在此第一次發問...
請問用什麼方式可以抓到游標或滑鼠目前所在DBGrid的Record? 我的意思是,讓游標所在之record可以立即顯示在另外的edit 內
我用: Edit1.Text:=FieldByName(' 欄位名稱').AsString 可是它都沒有隨著游標位置改變內容ㄋㄟ有沒有像是CurrentRecord之類的pointer呢?How to use it???
如果您的問題是對應一組 Edit 元件的話, 建議採用 TDBEdit 或 TDBLabel, 可以不必再費心管記錄位置;
如果是只有一個 EditBox, 內容要一直反應 DBGrid 的目前記錄的目前欄位, 那可以同時在 DataSource 的 OnDataChange 與 DbGrid 的 OnColEnter 這兩個事件中寫更新EditBox內容的程式.
例如 DBGrid 的 OnColEnter 事件:
procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.SelectedField <> nil then Edit1.Text := DBGrid1.SelectedField.AsString; end;
但只靠 OnColEnter 是不夠的, 因為, 在同一個 Column(同一個欄位)上下移動反白方格時, OnColEnter 是不會被觸發的, 所以, 可以再搭配 OnDataChange事件, 在 State 為 dsBrowse 時的 DataChange, 可以視同記錄位置的改變,以下的程式是呼叫 DBGrid 的 OnColEnter 事件處理程序:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if DataSource1.State = dsBrowse then DBGrid1ColEnter(Sender); end;
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |