你好!我碰到你以前碰到的问题。。....没有好的解决方法。。
OOP的一项原则是业务处理层和用户界面分开,在三层结构或“瘦客户”的两层结构中业务处理多放在中间层或由服务器的存储过程或触发器完成,客户端只负责与用户交互。但有时为了减轻服务器的负荷在两层结构的C/S系统中客户端程序有时也需要运行一些业务处理。我的设想是把这些业务处理以类来封装,结果叫由form显示。
   这些业务处理类必然要封装数据访问成员,delphi的数据访问控件为TDatabase,TTable,TQuery等控件,这些控件有自己的消息处理函数,因此要放在一个Form或DataModule中才能响应消息,如果作为一个直接继承自TObject的类的成员 这些数据访问控件怎样接收和处理消息呢?(没有窗口句柄怎样接收和处理消息?)
    所以这些业务处理类是不是要以一个Form存在,只是它不在屏幕上显示?那么建立一个对象就要用CreateForm而不应该用new了。同理,在中间层应用程序服务器封装不同的业务逻辑是不是也要用这种方法?
http://search.csdn.net/Expert/topic/2584/2584149.xml?temp=.5134851

解决方案 »

  1.   

    没有窗口句柄怎样接收和处理消息?-----实在不行就加个Form(Visible=false)处理消息,
      

  2.   

    也可以只在窗体上放DataSource控件。。
    但如何响应和处理数据访问控件的消息如OnPost,BefroPost之类消息
    如果运行期间把事件指针赋给数据集,会覆盖在数据集的事件
    不知有没有关于数据集的消息处理。。?
      

  3.   

    不太清楚楼主的需求……----没有窗口句柄怎样接收和处理消息?
    就这句话而言,有个办法……定义变量和消息处理函数:
      Handle:HWND; //句柄变量,用来处理消息
      procedure MainWndProc(var Message: TMessage); //消息处理函数Create的时候:
      Handle := Classes.AllcateHWnd(MainWndProc); //创建一个不可见的窗口用来处理消息Destory的时候:
      Classes.DeallocateHWnd(Handle); //销毁句柄procedure TTempObject.MainWndProc(var Message: TMessage);
    begin
      //在这里处理消息
    end;
      

  4.   

    不好意思,错了
    是在窗体上放DataSource控件。。
    但如何响应和处理数据访问控件的消息如OnPost,BefroPost之类消息
    如果运行期间把事件指针赋给数据集,会覆盖在数据集的事件
    不知有没有关于数据集的消息处理。。?
    想问的是这个。。
    不是----没有窗口句柄怎样接收和处理消息?