当前位置:主页>销售管理软件> 列表

请问当DBGrid组件用上下键移动时如何用Edit组件取得 找金碟财务软件

销售管理软件版1楼: 各位前辈救我:
我用DBGrid组件编一个数据库的程序,可当DBGrid组件上按键盘的上下键时,Edit编辑框的数据不是即时数据,总是慢一拍。
如:
Edit1.text:=DBGrid1.SelectedField.AsString;
取得的数据跟DBGrid选择的数据不一致。请问有什么好办法没?

2楼: edit1.text := dataset.fieldbyname(''edit.text所要字段名'').asstring;dataset为dbgrid的数据集。 如金碟财务软件

3楼: edit1.text := Query.FieldByName(''字段名'').asString;

4楼: Edit1.text:=DBGrid1.SelectedField.AsString;是获取当前选择的记录的当前选择的字段的值!

edit1.text := DBGrid1.DataSource.dataset.Findfield(''AFieldName'').asstring;

5楼: 其实你的问题是数据库指针移动后读取某个字段值:
procedure TfrmMain.ADOQMeasureAfterScroll(DataSet: TDataSet);
begin
dbgrid1dblClick(nil);
end;

procedure TFrmMain.DBGridMeasureDblClick(Sender: TObject);
var
tmp_batch:integer;
begin
tmp_batch:=ADOQMeasure.FieldByName(''Measure_batch'').AsInteger;


editId.Text:=IntToStr(tmp_batch);
end;

6楼: 谢谢几位大哥,不过FORMALITY大哥的方法比我自己刚找的好,以下是我找的代码?


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;