我想可以这样,在某个Table SetFocus的时候,改变NavigatBar跟Table的关联即可。

解决方案 »

  1.   

    具体应该如何操作呢?我不用NavigatBar,是用按钮的。
      

  2.   

    用个不可见的NavigatBar,(NavigatBar1.Visible:=False),将Button的Click事件与NavigatBar1相关联,即
    procedure TForm1.Button1Click(Sender:TObject);
    begin
      DBNavigator1.BtnClick(nbFirst);
    end;
    其余按Kingron所说即可。
      

  3.   

    这个太容易了吧。
    首先:在窗体上添加Actionlist部件(在Standard标记页上)。
    然后:然后双击此部件,在弹出的窗口上点右键,选择快捷菜单的“New Standard Action”选项。
    第三:选择以下选项
          Tdatasetcancel
          Tdatasetdelete
          Tdatasetinsert
          Tdatasetpost
          Tdatasetfirst
          Tdatasetnext
         ....第四:把editing actionlist窗口关掉好了。
    第五:在窗体上添加按钮(个数看你需要了),然后为每一个按钮的action属性(就在object Inspector中的第一个)选择相应的项。
    第六:在窗体上添加你想用的那5个 Ttable
    第七:可以了。
    第八:给我分!!!!!!!
    欢迎大家到小弟的网站玩玩呀
    http://ssudi.go.163.com
    mainto:[email protected]
      

  4.   

    同意minercxy,你还可以只放一个DBGRUID,
    在FORM上选择对那个数据集进行操作!
    Tactionlist是个很好的选择!
      

  5.   

    设一个TDataset类型的变量,如:MyDataset,在按钮中所有的操作都是对MyDataset的,然后,在某个form成为活动页面时,将它的table控件赋值给MyDataset即可,这样就实现了按钮的共用
      

  6.   

    设一个TDataset类型的变量,如:MyDataset,在按钮中所有的操作都是对MyDataset的,然后,在某个form成为活动页面时,将它的table控件赋值给MyDataset即可,这样就实现了按钮的共用
      

  7.   

    我来迟了!同意minercxy所说。
      

  8.   

    不迟不迟,minercxy啊,你的法子可不太灵哦。当同时出现两个以上窗口时,只能对第一个打开的窗口进行操作,其它窗口都是无效的。也就是说每打开一个新窗口时,就要把原来已打开的窗口关闭了才行。我要的是多窗口操作的,程序能自动判断哪个窗口在最前,并对此窗口进行操作。而且用方法时删除时不会提示,而是直接就删除了,太危险了。我觉得zh_sh()的方法比较可行,不过我不会写,哪位大哥写个给我学习学习?
      

  9.   

    用什么知道哪个form成为活动页面?又如何把它的table控件赋值给MyDataset?
      

  10.   

    关键还在如何知道哪个form成为了活动页面。
      

  11.   


    赋值可以用如下方法:
      MyDataset:=Table as TDataSet;
                 ^^^^^
                    your table's name
      

  12.   

    谁说不行的呀?只要在主窗口中放置一套按钮就行了,系统能自动识别是哪个子窗口激活的.至于Delete你在里面谢行代码就行了.可别忘了在里面加上 Inherited;
      

  13.   

    关于删除的问题,我建议你最好是在Tdataset的OnBeforeDelete事件中写代码,那样会很安全,像这种代码最好不要谢在外面.比如数据和放行的验证等等,能写到OnBefordPost里的尽量写在那里,我想应该不会出现什么问题的.写一个好的系统,可别怕麻烦.用户最怕的就是用着用着出来一行错误消息,我们能看的懂用户可就未必了.她会说:"这个软件不好用,不好,下次不用他们的产品了."
      

  14.   

    我的网站更新了关于报表制作的新资料了,还有源代码,那过来就能用了,呵呵,有兴趣的朋友赶紧去看看吧.先去先得呀,我可只放两个星期呀!
    http://ssudi.go.163.com
      

  15.   

    我的网站更新了关于报表制作的新资料了,还有源代码,那过来就能用了,呵呵,有兴趣的朋友赶紧去看看吧.先去先得呀,我可只放两个星期呀!
    http://ssudi.go.163.com
      

  16.   

    我用的时候是不对的,我是用了5 个form嵌入主窗口的,这几个form用主窗口 上的按钮调出,当调出第一个时是正常的,调出第二个,并最小化第一个时,并不能对第二个进行操作。
      

  17.   

    我以前用FRAME作了个类似的,可以实现两个TABLE公用一个NAVIGATEBAR,我想,用FRAME应该可以实现,但是,我现在手头上没有源码,大概是用一个FRAME(包括TDbgrid和NAVIGATBAR),然后,其他的由这个FRAME继承过来就可以了!等我回去查查!
      

  18.   

    我建一mainform,另有5 个form,是嵌入mainform中的。各个from上各有一table,显示不同库内容。若是各个form上的table各自带一套按钮(就前一条、后一条、增加、删除)和查询统计工具,那就太浪费也不好看。我想让这form上的5个table共用一套按钮,放在主窗口的工具条上,自动判断哪个打开的窗口在最前(各个form通过主窗口上的按钮调出),并对其操作(包括查询统计)。现在还不能实现查询统计,因为不能判断哪窗口在最前。我的查询格式是:字段名:combobox  根据不同的form从不同.db库中提取
                        条件:  combobox  有><<>=
                         值:   edit
    是用SQL查询,我想得把SQL所查的数据库.db设成变量,变量随当前活动窗口的不同而改变。字段名也应该是个变量吧。不过如何才能知道哪个窗口位于最前面呢?
      

  19.   

    你这个问题我给你的demo了。
    定义了一个消息,自窗体执行这个消息。
    刷新子表。子窗体onactive是告诉主窗体她活了,把handle直接给father窗体的一个变量。
    father的button点击时发消息,
      PostMessageA(ActiveFormHandle, CHILDFORM_LOCATE, 0, 0);
    给分不能两个人商量!要公平些。