发布网友 发布时间:2022-04-22 06:15
共4个回答
热心网友 时间:2023-08-27 08:11
你得再具体说下是一个程序的两个窗体,还是两个不同的程序。
1:同一程序就简单多了,弄个公共变量或直接访问另一窗体,因为delphi窗体在同一程序里都是以公共变量申明的。只要USES 上相应单元即可。
如 uses unit1;
然后窗口2里直接用 Label1.caption := Form1.Label1.caption;
2: 不同程序的话,稍微复杂一点点,方法也比较多,一是发窗口消息(SendMessage),二是SOCKET通信,但要开端口,不推荐,三是创建共享内存,这是最佳方法,详细的可以参见以下两个API (用法可查百科),OpenFileMapping,CreateFileMapping。
还有其他的方法,比如通道。原子之类的都可以达到类似效果。
热心网友 时间:2023-08-27 08:11
在窗体2中定义 一个public 的过程
public
procere SetLabel(strleb ; string);
//过程实现
procere SetLabel(strlab ; string);
begin
label1.caption := strlab;
end;
//如果报错
再定义一个私有变量
m_str : string;
函数内容改为
m_strlab:= strlab;
在窗体显示事件中
label1.caption ;= m_strlab
然后先调用过程
SetLabel(值);就OK了.
热心网友 时间:2023-09-22 12:54
你得再具体说下是一个程序的两个窗体,还是两个不同的程序。
1:同一程序就简单多了,弄个公共变量或直接访问另一窗体,因为delphi窗体在同一程序里都是以公共变量申明的。只要USES 上相应单元即可。
如 uses unit1;
然后窗口2里直接用 Label1.caption := Form1.Label1.caption;
2: 不同程序的话,稍微复杂一点点,方法也比较多,一是发窗口消息(SendMessage),二是SOCKET通信,但要开端口,不推荐,三是创建共享内存,这是最佳方法,详细的可以参见以下两个API (用法可查百科),OpenFileMapping,CreateFileMapping。
还有其他的方法,比如通道。原子之类的都可以达到类似效果。
热心网友 时间:2023-09-22 12:54
在窗体2中定义 一个public 的过程
public
procere SetLabel(strleb ; string);
//过程实现
procere SetLabel(strlab ; string);
begin
label1.caption := strlab;
end;
//如果报错
再定义一个私有变量
m_str : string;
函数内容改为
m_strlab:= strlab;
在窗体显示事件中
label1.caption ;= m_strlab
然后先调用过程
SetLabel(值);就OK了.
热心网友 时间:2023-09-22 12:55
在unit2的uses 里面引用 unit2
并在窗体2按钮内写 label1.caption := form1.label1.caption;
大概是这样
热心网友 时间:2023-09-22 12:55
看你这个图,应该是说两个应用程序的传值问题,提供两个方法:
一 用socket编程(可以用indy、ics、serversocket等组件实现),传递值到目标程序
二 用内存映射,让目标程序读取共享内存
不管哪一种方法,对新手来说都不简单,编码量也不会很少,所以具体实现代码你去查下相关知识点