在俩个pas文件中****************************************************
main.pas 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Procedure TForm1.NotifyScroll;
var
  aUs:TUpdateStatus;
Begin
  aUs:=DataModule1.ADODataSet1.UpdateStatus ;
  if (aUs = usUnmodified ) then
    FillStatus( true,false,false,false)
  else  if (aUs = usModified ) then
    FillStatus(false ,true ,false ,false )
  else
    if (aUs = usInserted ) then
    FillStatus(false ,false ,true ,false )
  else
    if (aUs = usDeleted ) then
    FillStatus(false ,false ,false ,true );end;********************************************************************
unit.pas
+++++++++++++++++++++++++++++++++++++++++++
procedure TDataModule1.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
(×)  Tform1.NotifyScroll;end;
===================================================编译时提示:[Error] Unit1.pas(29): This form of method call only allowed for class methods
就是指 (×)这条语句有错。这到底是什么错呢?

解决方案 »

  1.   

    main.pas 代码:=============================
    unit main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, Grids, DBGrids, ExtCtrls, DBCtrls, ADODB, StdCtrls, Menus;type
      TForm1 = class(TForm)
        DBNavigator1: TDBNavigator;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        RadioGroup1: TRadioGroup;
        RadioGroup2: TRadioGroup;
        RadioButton1: TRadioButton;
        RadioButton2: TRadioButton;
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        N2: TMenuItem;
        N3: TMenuItem;
        N4: TMenuItem;
        Link1: TMenuItem;
        Break1: TMenuItem;
        N5: TMenuItem;
        N6: TMenuItem;
        N7: TMenuItem;
        RadioGroup3: TRadioGroup;
        ckusUnmodified: TRadioButton;
        ckusModified: TRadioButton;
        ckusInserted: TRadioButton;
        ckusDeleted: TRadioButton;
        procedure RadioButtonClick(Sender: TObject);
        procedure Link1Click(Sender: TObject);
        procedure Break1Click(Sender: TObject);
        procedure N6Click(Sender: TObject);
        procedure N7Click(Sender: TObject);
        Procedure NotifyScroll;
        Procedure FillStatus(ck1,ck2,ck3,ck4:Boolean);
      private
        { Private declarations
     }   
      public
        { Public declarations }
         (*procedure TForm1.RadioButtonClick(Sender: TObject);  *)
      end;var
      Form1: TForm1;implementationuses Unit1;{$R *.dfm}procedure TForm1.RadioButtonClick(Sender: TObject);
    begin
      case Tcomponent(Sender).Tag of
      0:
        begin
       if ((datamodule1.ADODataSet1.LockType= ltBatchOptimistic) and
       (dataModule1.AdodataSet1.active = true)) then
         begin
             dataModule1.ADODataSet1.Filtered:=true;
             datamodule1.ADODataSet1.FilterGroup:=fgNone;
         end;
       end;
      1:
            if((dataModule1.ADODataSet1.LockType =ltBatchOptimistic) and
             (dataModule1.AdodataSet1.active = true)  ) then
                begin
                  datamodule1.ADODataSet1.Filtered:=true;
                  datamodule1.ADODataSet1.FilterGroup:=fgPendingRecords;
                end;
            end ;
      end ;procedure TForm1.Link1Click(Sender: TObject);
    begin
       DataModule1.ADODataSet1.Active:=true;end;procedure TForm1.Break1Click(Sender: TObject);
    begin  Datamodule1.ADODataSet1.Active:=false;
    end;procedure TForm1.N6Click(Sender: TObject);
    begin
      DataModule1.AdoDataSet1.UpdateBatch;
    end;procedure TForm1.N7Click;
    begin
     DataModule1.ADODataSet1.CancelBatch;
    end;Procedure TForm1.NotifyScroll(Sender: TObject);
    var
      aUs:TUpdateStatus;
    Begin
      aUs:=DataModule1.ADODataSet1.UpdateStatus ;
      if (aUs = usUnmodified ) then
        FillStatus( true,false,false,false)
      else  if (aUs = usModified ) then
        FillStatus(false ,true ,false ,false )
      else
        if (aUs = usInserted ) then
        FillStatus(false ,false ,true ,false )
      else
        if (aUs = usDeleted ) then
        FillStatus(false ,false ,false ,true );end;Procedure TForm1.FillStatus(ck1,ck2,ck3,ck4:Boolean);
    Begin
        ckusUnmodified.Checked:=ck1;
        ckusModified.Checked:=ck2;
        ckusInserted.Checked:=ck3;
        ckusDeleted.Checked:=ck4;
    end ;
    end.
      

  2.   

    unit1.pas代码=================
    unit Unit1;interfaceuses
      SysUtils, Classes, DB, ADODB;type
      TDataModule1 = class(TDataModule)
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
        procedure ADODataSet1AfterScroll(DataSet: TDataSet);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModule1: TDataModule1;implementation uses main;
    {$R *.dfm}
        
    procedure TDataModule1.ADODataSet1AfterScroll(DataSet: TDataSet);
    begin
      Tform1.NotifyScroll;(程序老是说这语句有错,为什么?)end;end.
      

  3.   

    你试试在下面加上main看看,如不行,就找书辑看看,总之你得进行声明。
    unit Unit1;interfaceuses
      SysUtils, Classes, DB, ADODB, main;