unit Unit5;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, DBCtrls, StdCtrls;type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    procedure DBGrid1Enter(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}
function GetDBGridEdit(vDBGrid:TDBGrid):TEdit;
var
I:Integer;
begin
Result:=nil;
if not Assigned(vDBGrid) then Exit;
if not vDBGrid.EditorMode then
begin
vDBGrid.EditorMode:=True;
vDBGrid.EditorMode:=False;
end;
with vDBGrid do
 for I:=0 to Pred(ComponentCount) do
  if Components[I]is TCustomEdit then
     begin
     Result:=TEdit(Components[I]);
     Break;
     end;
function GetDBGridEditText(vDBGrid:TDBGrid):String;
var
vEdit:TEdit;
begin
vEdit:=GetDBGridEdit(vDBGrid);
if Assigned(vEdit) then
   Result:=vEdit.Text
   else Result:='';
end;
procedure TForm1.DBGrid1Enter(Sender: TObject);
   var
    vEdit:TEdit;
begin
vEdit:=GetDBGridEdit(TDBGrid(Sender));
if Assigned(vEdit) then vEdit.Color:=clYellow;
end;end.

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        ADOQuery1: TADOQuery;
        ADOConnection1: TADOConnection;
        procedure DBGrid1Enter(Sender: TObject);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function GetDBGridEdit(vDBGrid:TDBGrid):TEdit;
    var
      I:Integer;
    begin
      Result:=nil;
      if not Assigned(vDBGrid) then Exit;
      if not vDBGrid.EditorMode then
      begin
        vDBGrid.EditorMode:=True;
        vDBGrid.EditorMode:=False;
      end;
      with vDBGrid do
       for I:=0 to Pred(ComponentCount) do
         if Components[I]is TCustomEdit then
         begin
           Result:=TEdit(Components[I]);
           Break;
         end;
    end ;function GetDBGridEditText(vDBGrid:TDBGrid):String;
    var
      vEdit:TEdit;
    begin
       vEdit:=GetDBGridEdit(vDBGrid);
       if Assigned(vEdit) then
         Result:=vEdit.Text
       else
         Result:='';
    end;procedure TForm1.DBGrid1Enter(Sender: TObject);
    var
      vEdit:TEdit;
    begin
      vEdit:=GetDBGridEdit(TDBGrid(Sender));
      if Assigned(vEdit) then vEdit.Color:=clYellow;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      AdoConnection1.Open ;
      AdoQuery1.Open ;
    end;end.
      

  2.   

    运行时function GetDBGridEditText(vDBGrid:TDBGrid):String;这一行报错我也不知错在何处,我是新手,请大家不要见笑呀!