在DBGrid中遇到的高难度问题!!问题:  我要在DBGrid(DBGrid的DataSet是表1)的一个列中输入信息然后在表2中查找, 如果找到,在表1中添加这条记录,否则取消操作。要求:  按下‘回车’或‘下箭头’键时执行查找操作;回车键的方法已经实现; 用箭头键时遇到下面问题:怎么能得到我输入的信息(要查找的内容)?取表1当前记录字段的值是不行的。望高手指点。

解决方案 »

  1.   

    这样吧,你将字段值加到DBGrid里边,然后用DBGrid -> FieldList找;
      

  2.   

    procedure Tform1.DBGrid1Enter(Sender: TObject);
      var
      vEdit: TEdit;
    begin
      vEdit := GetDBGridEdit(TDBGrid(Sender));
      if Assigned(vEdit) then vEdit.Color := clYellow;end;function GetDBGridEdit(mDBGrid: TDBGrid): TEdit;
    var
      I: Integer;
    begin
      Result := nil;
      if not Assigned(mDBGrid) then Exit;
      if not mDBGrid.EditorMode then begin
        mDBGrid.EditorMode := True;
        mDBGrid.EditorMode := False;
      end;
      with mDBGrid do for I := 0 to Pred(ComponentCount) do
        if Components[I] is TCustomEdit then begin
          Result := TEdit(Components[I]);
          Break;
        end;
    end;function GetDBGridEditText(mDBGrid: TDBGrid): string;
    var
      vEdit: TEdit;
    begin
      vEdit := GetDBGridEdit(mDBGrid);
      if Assigned(vEdit) then
        Result := vEdit.Text
      else Result := '';
    end; { GetDBGridEditText }
    这是我在以前的帖子中找的,意思就是随时得到当前的输入值。自己试试吧
    最后用GetDBGridEdit(dbgrid1).text就得到了值
      

  3.   

    当在DBGrid中输入时,会调用一个TInplaceEdit来进行输入,只要查找一个TInplaceEdit的对象的Text方法就行