var
FormMsg:TForm3;
begin
//
if assigned(FormMsg) then
begin
FormMsg:=TForm3.Create(Self);
FormMsg.MsgParm.s_PayId := IntToStr(FormMsg.Handle);
FormMsg.MsgParm.FormHand:= FormMsg.Handle;
FormMsg.Show;
end;
end;在Form3里这样可以正确取到值 Form3头部
unit Unit3;interfaceuses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;type TMsginfo = record
s_Op:string;
FormHand:Integer;
ItemId:Integer;
end;
PMsginfo = ^TMsginfo;type
TForm3 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Splitter1: TSplitter;
Button1: TButton;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MsgParm:TMsginfo;
end;var
Form3: TForm3;
MsgThread :Integer;
b_MsgComplent:Boolean;
implementationprocedure TForm3.Button1Click(Sender: TObject);
var
i:string;
begin
i := MsgParm.s_PayId;
end;下面的线程我要怎么取值,请指点一下
procedure TForm3.FormShow(Sender: TObject);
var
ThreadID:Cardinal;
begin
//MsgParm.FormHand:= Self;
MsgParm.s_Op := 'Open'; //这里都能正确取值
b_MsgComplent:= True;
//MsgDo(1);
MsgThread:=CreateThread(nil,0,@MsgDo,@MsgParm,0,ThreadID);
end;function MsgDo(P:Pointer):Integer;
var
payid:string;
begin
payid :=PMsgParm(P)^.s_PayId;//这样取不到值了
payid :=MsgParm.s_PayId;//这样取不到值了
//如果不是动态创建的
payid :=Form3.MsgParm.s_PayId;//这样也取不到end;这个线程中我要如何取值,传值
FormMsg:TForm3;
begin
//
if assigned(FormMsg) then
begin
FormMsg:=TForm3.Create(Self);
FormMsg.MsgParm.s_PayId := IntToStr(FormMsg.Handle);
FormMsg.MsgParm.FormHand:= FormMsg.Handle;
FormMsg.Show;
end;
end;在Form3里这样可以正确取到值 Form3头部
unit Unit3;interfaceuses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;type TMsginfo = record
s_Op:string;
FormHand:Integer;
ItemId:Integer;
end;
PMsginfo = ^TMsginfo;type
TForm3 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Splitter1: TSplitter;
Button1: TButton;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MsgParm:TMsginfo;
end;var
Form3: TForm3;
MsgThread :Integer;
b_MsgComplent:Boolean;
implementationprocedure TForm3.Button1Click(Sender: TObject);
var
i:string;
begin
i := MsgParm.s_PayId;
end;下面的线程我要怎么取值,请指点一下
procedure TForm3.FormShow(Sender: TObject);
var
ThreadID:Cardinal;
begin
//MsgParm.FormHand:= Self;
MsgParm.s_Op := 'Open'; //这里都能正确取值
b_MsgComplent:= True;
//MsgDo(1);
MsgThread:=CreateThread(nil,0,@MsgDo,@MsgParm,0,ThreadID);
end;function MsgDo(P:Pointer):Integer;
var
payid:string;
begin
payid :=PMsgParm(P)^.s_PayId;//这样取不到值了
payid :=MsgParm.s_PayId;//这样取不到值了
//如果不是动态创建的
payid :=Form3.MsgParm.s_PayId;//这样也取不到end;这个线程中我要如何取值,传值
解决方案 »
- delphi2007的dbclient.pas文件在哪?
- 这种情况下如何显示中文
- 奇怪的矩形绘图,rectangle
- delphi7+ado+access2000开发的程序,能在没有安装access2000的机器上运行吗?
- 请问怎样使程序在最小化后图标放在任务栏的托盘上?
- 在delphi连接oracle数据库什么组件较好
- 我用DELPHI6来连接ACCESS时那个密码的问题处理不好
- 如何让报表中的文字能够自动换行,长度小于100
- 关于access的一个菜鸟级的问题
- Inno 生成的安装文件,英文 安装过程中取消安装,出现的Exit Setup对话框的按钮是中文的
- 求助一个Report Machine报表的问题
- 【告诉我我不是一个人】关于内存加载EXE并运行,WIN7下不可用的解决方法。
MsgThread:=CreateThread(nil,0,@MsgDo,Self,0,ThreadID);
再在线程中通过此实例访问其域变量MsgParm。
定义错误,改成
function MsgDo(P:Pointer):Integer;stdcall;