比如toolbar,上面都有添加、修改、删除这几个按钮,各个按钮分别引同样的图片;再比如dbgrid,都是相同的样式,每次把那些property都设一遍太麻烦了
大量模块都需要这种相同的组件,有没有什么好办法把这种东西添到资源库或者什么东西里,每次只引用定制好?
大量模块都需要这种相同的组件,有没有什么好办法把这种东西添到资源库或者什么东西里,每次只引用定制好?
解决方案 »
- 问一个关于DBGrid1的很简单的问题!
- 关于fastreport的问题,高手请进!!!
- 如何快速作到客户端查询服务器数据?
- 如何遍历ini文件里的内容??
- 200分,星期一结,散分开心
- 我刚接触delphi,编译一个工程时提示没有发现spcomm.dcu
- 请问一下各位,商业银行卡能不能在湖南取钱?
- voc文件播放问题
- 我在ScrollBox中放了一个大的图片,AutoSize 为true,但是scrollbox中还是没有出现滚动条何故??
- 不使用ClientDataset.applyupdate更新数据,而把Clentdataset.delta作为一个参数传到控制对象的方法updata(data:varient)中为什么只能更新一次
- 数据库提取数据绘制直角坐标图的问题
- IE中模拟点击“转到”按钮
选中一个控件之后,然后component里面的create component template
不过有个小问题,控件有大有小,frame初始老大一个,怎么让frame正好跟那个控件一样大?手拖?
dbgrid的问题
用frame中继承的dbgrid不能自己定制列,不允许修改
and,我有个自动适应列宽的函数,需要dbgrid载入数据后才能调用,这个函数应该加在哪儿呢?
方法一:project | Add to Repository方法二:component | Create component template用的时候从指定的面板上拖下来
Repository和Component Template一般用于单个控件的多个实例的情况
现在有些头痛的是frame有的事情做不到
比如想实现显示时的dbgrid的dataset.active:=true,说我暴力引用,应该有办法解决吧?
and,我有个自动适应列宽的函数,需要dbgrid载入数据后才能调用,这个函数应该加在哪儿呢?
------------------------------------
可以修改,只是如果你直接在拖下来的frame上改了东西后,会跟原始frame失去同步而已(解决方法是重新拖一次)。否则的话,会自动跟原始frame同步。函数加在frame里,可以作为dbgrid的一个事件,或者提供函数给外界调用。
现在有些头痛的是frame有的事情做不到
比如想实现显示时的dbgrid的dataset.active:=true,说我暴力引用,应该有办法解决吧?
------------------------------------
frame里提供个叫SetActive的函数来调用,那你改了dataset后,主程序不用跟着改。你把frame想象成一个控件就成了(c#里叫的用户控件,其实是同一个概念)
---------------------------------------
这个……作为dbgrid的什么事件?找不到什么frame的onshow事件,写在constructor里又不行,现在只好勉强写到dbgrid的onenter事件里了frame里提供个叫SetActive的函数来调用,那你改了dataset后,主程序不用跟着改。你把frame想象成一个控件就成了(c#里叫的用户控件,其实是同一个概念)
----------------------------------------
这个有点不明白,想要的效果是dbgrid被show的时候dbgrid.datasource.dataset.active:=true;这句话写在template里,具体模块里就什么都不用写了
“frame里提供个叫SetActive的函数来调用”,不是还是要具体模块中写一个frame.setactive?
------------------------------------
有多种解决方法:
1、如果你的frame提供一个叫LoadToDBGrid的方法,那么你外界调用后就可以紧接着调用frame提供的另外一个方法AdjustColumnWidth(如果这个函数是写在frame里)。
2、frame里提供一个onLoadDBGrid事件(参数为你那个DBGRID),然后在LoadToDBGrid里触发这个事件,在这个事件里调用AdjustColumnWidth函数(如果这个函数写在frame外)。不过需要覆盖下form的constructor,把这个事件动态关联到frame里。
这个有点不明白,想要的效果是dbgrid被show的时候dbgrid.datasource.dataset.active:=true;这句话写在template里,具体模块里就什么都不用写了
“frame里提供个叫SetActive的函数来调用”,不是还是要具体模块中写一个frame.setactive?
-------------------------------------
你可以换种思路,假设frame.setgridactive就是执行dbgrid.datasource.dataset.active:=true,那么你在frame.show后,接着执行frame.setgridactive不就可以了?
本来就是写在constructor里的,就是在这儿报暴力引用,我才问的
我的frame是直接拖到tabsheet上的,不是手动创建的,没有可以调用地方啊??
看来frame后的模板也不是可以随意组合的