procedure TF_main_search.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if key=13 then
   application.CreateForm(TF_search_result,F_search_result);
   F_search_result.Dock(p_main,BoundsRect);
   F_search_result.show;
end;end;请告诉我这句写得有错么?
错误提示告诉我:
[Error] Search.pas(72): Statement expected but 'PROCEDURE' found
[Error] Search.pas(80): '.' expected but ';' found
[Fatal Error] project1.dpr(10): Could not compile used unit 'Search.pas'

解决方案 »

  1.   

    最后一个end;去掉
    如果是结尾就改为end.
      

  2.   


     if key=13 then
     begin
       application.CreateForm(TF_search_result,F_search_result);
       F_search_result.Dock(p_main,BoundsRect);
       F_search_result.show;
     end;
    if then的结构体中少一个begin
      

  3.   

    是不是应该if key=#13 then.....
    还有,同意上楼的意见,多了一个end;
      

  4.   

    procedure TF_main_search.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin if key=13 then
      begin
     showmessage('aaaaaaaa');
        end;
    end;就算这样写,还是报错:
    [Error] Search.pas(72): Statement expected but 'PROCEDURE' found
    [Fatal Error] Main.pas(68): Could not compile used unit 'Search.pas'
      

  5.   

    我记得在这里就应该是key=13。
      

  6.   

    呵呵,问题的关键:少个end;
      

  7.   

    一个地方多end;
    一个地方少end;
    呵呵
      

  8.   

    是这个procedure TF_main_search.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);上面少了什么东西,仔细看看了
      

  9.   

    unit Search;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, ComCtrls, Grids, TFlatComboBoxUnit,
      DsFancyButton,DB, ADODB, TFlatSpeedButtonUnit, DBGrids,
      DBCtrls;type
      TF_main_search = class(TForm)
        Image: TImage;
        L_title: TLabel;
        P_back: TPanel;
        P_main: TPanel;
        PageScroller_input: TPageScroller;
        Panel1: TPanel;
        begin_date: TDateTimePicker;
        Label2: TLabel;
        Label1: TLabel;
        Panel_down: TPanel;
        Bevel: TBevel;
        Panel_button: TPanel;
        OKBtn: TDsFancyButton;
        CancelBtn: TDsFancyButton;
        BT_query: TFlatSpeedButton;
        DataSource1: TDataSource;
        ADOQuery1: TADOQuery;
        data_result: TDBGrid;
        Label3: TLabel;
        Label4: TLabel;
        end_date: TDateTimePicker;
        ComboBox1: TComboBox;
        Label5: TLabel;
        mh: TCheckBox;
        Label6: TLabel;
        Edit1: TEdit;
        procedure CancelBtnClick(Sender: TObject);
        procedure BT_queryClick(Sender: TObject);
        procedure Edit1Change(Sender: TObject);
        procedure Edit1KeyDown(Sender: TObject; var Key: Word;
        Shift: TShiftState);
       
      
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      F_main_search: TF_main_search;implementation
    uses DataModule,result;
    {$R *.dfm}procedure TF_main_search.Edit1Change(Sender: TObject);
    begin
    if mh.Checked =true then
     begin
       if  ADOQuery1.Active then
       with data_result.datasource.dataset do
           ADOQuery1.close;
          ADOQuery1.sql.clear;
        ADOQuery1.sql.add('select * from ku where rq like ''过期'+trim(edit1.Text)+'%''');
        ADOQuery1.open;
        
       end;//----------这里就是出错的地方.错误信息请看我上面的贴子.
    procedure TF_main_search.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin if key=vk_return then
      begin
     showmessage('sdfsadf');
        end;
    end;procedure TF_main_search.BT_queryClick(Sender: TObject);
    var k1:string;
        k2:string;
    begin
        with ADOQuery1 do
      begin
      k1:=FormatDateTime('YYYY-MM-DD',begin_date.DateTime);
      k2:=FormatDateTime('YYYY-MM-DD',end_date.DateTime);
        ADOQuery1.close;
        ADOQuery1.sql.clear;    if trim(combobox1.Text)='任意' then
        ADOQuery1.sql.add(' select * from ku where 1=1 and  rq BETWEEN '''+datetostr(begin_date.Date)+''' and '''+datetostr(end_date.date)+'''');    if trim(combobox1.text)<>'任意' then        begin
              ADOQuery1.sql.add(' select * from ku where ');
              adoquery1.SQL.Add(' cx= '''+trim(combobox1.Text)+'''');
              adoquery1.SQL.Add(' and rq BETWEEN '''+datetostr(begin_date.Date)+''' and '''+datetostr(end_date.date)+'''');
            end;
        ADOQuery1.open;
      end;
    end;
    procedure TF_main_search.CancelBtnClick(Sender: TObject);
    begin
    self.Close;
    end;end.
    //-----------------------------这是工程文件。program project1;uses
      Forms,
      Main in 'Main.pas' {F_main},
      DataModule in 'DataModule.pas' {DB_module},
      Search in 'Search.pas' {F_main_search},
      Unit_common_files in 'Unit_common_files.pas',
      result in 'result.pas' {F_search_result};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TF_main, F_main);
      Application.CreateForm(TDB_module, DB_module);
      Application.CreateForm(TF_main_search, F_main_search);
      Application.CreateForm(TF_search_result, F_search_result);
      Application.Run;
    end.
    服了……
      

  10.   

    你改用 OnKeyPress 事件 試試 !! if Key=#13 then
      ShowMessage('aaaaa');
      
      

  11.   

    那就不關KEY 事件的問題拉! 在Project 中remove 出錯的from 看看是否出錯在這個from
      

  12.   

    知道拉!你在你//----------这里就是出错的地方.错误信息请看我上面的贴子. 這句話之前的procedure 少了一個end;
      

  13.   

    谢谢season_lang,真丢人。
    现在不报错了,可是运行时不出现showmessage!!!!
      

  14.   

    OnKeyDown : if Key = VK_RETURN  then ShowMessage('aaaa') ;
    OnKeyPress: if key = #13        then ShowMessage('aaaa') 兩個事件任你選一個! 一定會出MessageBox的!請檢查你的 Edit1 的OnKeyDown 事件是否連到了其他控件的事件!
      

  15.   

    谢谢season_lang,正是edit1的onkeydown连到了其它事件上了。不好意思!!给分了。