高手:请提供这个问题的代码
  1):在Form中怎样来屏蔽用户按alt+F4来关闭该窗口,即不响应.(窗口标题栏已经设置为无关闭按扭),
 2)用Dbgrid,datasource,adoquery1怎样实现或其他控件结合来实现记录的分页显示,不是在多层结构中.

解决方案 »

  1.   

    1 在form的KeyPress理拦截Alt+F4 在OnClose事件里加入代码,不让退
    2 你没说清楚
      

  2.   

    1、
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Shift = [ssAlt] then
        if Key = 115 then
          Key := 0;end;
      

  3.   

    2、一台只查一定数量的记当,记住id,下次从此id开始往下查
      

  4.   

    2、
    你可以在SQL语句中用来限制每次执行查询的是否,一次SELECT出几条符合条件的记录
    例如DB2中的SQL这样写:显示3条记录
    select * from t_table fetch first  3 rows  only
      

  5.   

    1,拦截WM_SYSCOMMAND 事件就可以了;
    2,设置adoquery1.Recordset.PageSize=你想要每页显示的记录数就可以了。
      

  6.   

    to  CeleronII(抽烟的鱼)
      我刚才试了一下你的代码,好像不行耶~~~~~
      

  7.   

    Form的KeyPreview设为True再试。嘿嘿
      

  8.   

    1,在onCloseQuery事件中写canClose := False;
      

  9.   

    1、当你还不允许别人关闭时就在FormCloseQuery事件里的参数CanClose返回False否则返回True
      

  10.   

    分页吗,只能用stringgrid来实现,自己写分页代码,李维的《Delphl5.x ADO/MTS/CoM+高级程序设计篇》一书有详细介绍
      

  11.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if ADODataSet1.Recordset.AbsolutePosition >10 then
        ADODataSet1.Recordset.AbsolutePosition := ADODataSet1.Recordset.AbsolutePosition - 10;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ADODataSet1.CommandText := 'Select * From AnyTable';
      ADODataSet1.Recordset.PageSize := 10;
      ADODataSet1.Open;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      if ADODataSet1.Recordset.AbsolutePosition <ADODataSet1.RecordCount - 10  then
        ADODataSet1.Recordset.AbsolutePosition := ADODataSet1.Recordset.AbsolutePosition + 10;
    end;但在DBGrid中无法实现,可能是它的一个Bug吧。
      

  12.   

    你可以调试就会发现实际上已际实现了分页,只是DBGrid不支持显示。你可以用StringGrid,ListView之类的网格构件来代替显示。