有一个程序A,主窗口中带有一个TPageControl控件,在其上有二个页面,程序运行时,只有一个页面显示出来,另一个页面没有显示,
我另外写了一程序B,在程序B中找到A程序中TPageControl控件的句柄,然后B程序发送一个消息给这个句柄,使A程序中TPageControl控件将其所有页面都显示出来
但不知发送什么消息,我用SPY++查看,也只看到一个页面。如何实现发送消息将另一个程序中的PAGECONTROL隐含的页面显示出来呢?
还请各位大侠指点,谢谢!
我另外写了一程序B,在程序B中找到A程序中TPageControl控件的句柄,然后B程序发送一个消息给这个句柄,使A程序中TPageControl控件将其所有页面都显示出来
但不知发送什么消息,我用SPY++查看,也只看到一个页面。如何实现发送消息将另一个程序中的PAGECONTROL隐含的页面显示出来呢?
还请各位大侠指点,谢谢!
解决方案 »
- 关于基于TCP/IP,SNMP的网络管理系统,如何做?
- 人气好差呀,无聊散分。。。
- PicShow (3.06)是免费的吗?
- 如何在原有控件的基础上开发控件,保留原有控件的一些事件?
- 请问各位知道哪儿有专门讲delphi的报表的书吗?(电子书也可以)
- delphi程序怎么在任务管理器的"应用程序"里隐藏?[
- 关于Tabcontrol
- 请问怎样判断输入文本框内的是否是数字?
- 怎么让listbox每隔一行变换一种颜色?
- 怎样获得其他应用程序中某个控件的句柄
- 使用batchmove,报数据表mytable_name的定义未找到!急,郁闷好久了
- 请问怎么根据DBGridEh标题栏的标题找到相应栏的字段名呢
如果是D写的,很可能在窗体创建时就创建了所有tab页
如果是VC写的,很可能tab页要到该显示时才创建SPY++也找不到句柄的话,那就应该是后者了,既然都没创建,当然不可能发消息让它show出来了
SendMessage(PageControl1.Handle,TCM_DELETEITEM, 1,0);//删除第2页。
如果不知道有多少页,可以用下面的方法删除最后一页:
SendMessage(PageControl1.Handle,TCM_DELETEITEM, SendMessage(PageControl1.Handle,TCM_GETITEMCOUNT,0,0)-1,0);如果你确实想实现你所说的消息,你可以建两个TPageControl控件,一个PageControl1只有一页,另一个PageControl2有两个页,并且PageControl2的第一个页面跟PageControl1的完全相同。然后在你的程序B运行的时候隐藏PageControl1,显示PageControl2。这就是你要的效果。当然,如果你非常强悍的话,你可以在程序B执行的时候在程序A中发消息动态添加一页,然后再在该页上动态添加控件。其实Delphi中许多控件都可以直接用代码创建,而不用鼠标去拖已有的控件。而且动态创建的控件生成的EXE很小。
由于该程序只有EXE文件,没有源文件,而我现在就是想让另一页也可以直接显示出来。
我试过在B程序中用TCM_INSERTITEM在A程序中的PageControl中添加一个TAB,但是点击该TAB后,在TABSHEET上面显示的是空白,
不是原有的那个页面。感觉是TAB与页面没有关联起来。
当没有使用TCM_INSERTITEM时,我用TCM_GETITEMCOUNT获取到的数据只为1。
我目前采取的方法就是在B程序发送符合A程序中的条件让隐藏的页面显示出来。
但是否还有其他方法呢?
还请各路高手大侠指点,谢谢!