窗体传递参数给有BPL包创建的MDI子窗口中的参数
2013-01-11 18:45
393 查看
procedure Tfrm_fun_01_gpsdata_newobj.Button2Click(Sender: TObject);
var
cdds: TCopyDataStruct; // 消息体
hd: THandle;
begin
cdds.dwData := 0; // dwdata初始化
cdds.cbData := length(Edit1.Text) + 1; // cbData定义消息体的字符长度,+1个长度,是为了存储结束符
cdds.lpData := pchar(Edit1.Text); // 告诉消息体,LPDATA的指针指向memo1.Text存储位置的指针
// fHwnd:=
hd := FindWindow('Tform3', nil); //先查找主窗体句柄
hd := FindWindowEx(hd, 0, 'MDIClient', nil);//根据主窗口句柄查找MDI子窗口容器
hd := FindWindowEx(hd, 0, 'Tfrm_fun_01_gpsdata_main', nil);//根据MDI子窗口容器句柄查找子窗口
if hd <> 0 then
SendMessage(hd, WM_COPYDATA, 0, LongWord(@cdds)) // 发送消息体
else
ShowMessage('目标窗口没找到!');
// showmessage(inttostr(integer(fardizhi)));
end;
----------------------------------------
type
Tfrm_fun_01_gpsdata_main = class(TForm)
top: TPanel;
right: TPanel;
bottom: TPanel;
RadioGroup1: TRadioGroup;
Splitter1: TSplitter;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
。。。。。
procedure Mymessage(Var Msg: TMessage); Message WM_COPYDATA; // 定义函数接收过程
end;
procedure Tfrm_fun_01_gpsdata_main.Mymessage(var Msg: TMessage); // 定义接收消息的具体过程
var
cdds: TcopyDataStruct;
begin
if Msg.Msg = WM_COPYDATA then
begin
cdds := PcopyDataStruct(Msg.LParam)^;
if cdds.dwData = 0 then
begin
Edit1.Text := '0' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 1 then
begin
Edit1.Text := '1' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 2 then
begin
Edit1.Text := '2' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 3000 then
begin
Edit1.Text := '3000' + (Pchar(cdds.lpData));
end;
end;
end;
var
cdds: TCopyDataStruct; // 消息体
hd: THandle;
begin
cdds.dwData := 0; // dwdata初始化
cdds.cbData := length(Edit1.Text) + 1; // cbData定义消息体的字符长度,+1个长度,是为了存储结束符
cdds.lpData := pchar(Edit1.Text); // 告诉消息体,LPDATA的指针指向memo1.Text存储位置的指针
// fHwnd:=
hd := FindWindow('Tform3', nil); //先查找主窗体句柄
hd := FindWindowEx(hd, 0, 'MDIClient', nil);//根据主窗口句柄查找MDI子窗口容器
hd := FindWindowEx(hd, 0, 'Tfrm_fun_01_gpsdata_main', nil);//根据MDI子窗口容器句柄查找子窗口
if hd <> 0 then
SendMessage(hd, WM_COPYDATA, 0, LongWord(@cdds)) // 发送消息体
else
ShowMessage('目标窗口没找到!');
// showmessage(inttostr(integer(fardizhi)));
end;
----------------------------------------
type
Tfrm_fun_01_gpsdata_main = class(TForm)
top: TPanel;
right: TPanel;
bottom: TPanel;
RadioGroup1: TRadioGroup;
Splitter1: TSplitter;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
。。。。。
procedure Mymessage(Var Msg: TMessage); Message WM_COPYDATA; // 定义函数接收过程
end;
procedure Tfrm_fun_01_gpsdata_main.Mymessage(var Msg: TMessage); // 定义接收消息的具体过程
var
cdds: TcopyDataStruct;
begin
if Msg.Msg = WM_COPYDATA then
begin
cdds := PcopyDataStruct(Msg.LParam)^;
if cdds.dwData = 0 then
begin
Edit1.Text := '0' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 1 then
begin
Edit1.Text := '1' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 2 then
begin
Edit1.Text := '2' + (Pchar(cdds.lpData));
end;
if cdds.dwData = 3000 then
begin
Edit1.Text := '3000' + (Pchar(cdds.lpData));
end;
end;
end;
相关文章推荐
- Win32简单的子窗口创建与参数传递
- c#WINFROM窗体之间传递参数的解决方案
- 演示弹出窗口传递参数,并用参数来动态修改DataGrid的列
- oracle 存储过程 函数 创建 删除 参数 传递 函数 查看 包 系统包
- 网页编程,JS模态窗口,父页面向子页面传递参数
- EXTJS通过Button按钮向弹出的IFRAM窗口传递参数与获取参数
- C#窗体之间传递参数
- PowerBuilder窗口之间传递多参数的方法
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)1
- ReportView报表实现带参数存储过程创建报表以及为rdlc传递参
- 创建UI线程并正确传递参数
- Flex中窗体参数传递方法
- 向模态窗体传递参数和获取返回值
- EAS8.0,EAS8.2,WAF2,JS,打开新页面,打开新窗口,传递参数
- PowerBuilder窗口之间传递多参数的方法
- win32 简单窗口的创建及参数介绍
- 安卓入门 使用android创建一个项目 从启动activity中响应按钮事件 启动另一个activity 并传递参数
- 给弹出的窗口传递参数
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
- c# winform窗体之间传递参数问题总结