当前位置:主页>销售管理软件> 列表

问一个关于消息传递参数 的问题 00--》竟然发生变化了, 找手机进销存管理软件

财务软件版1楼: 我的意思是在一个消息中传递一个字符串 ,然在消息中根据参数处理情况
然后在消息处理中再发一个消息,同样还要用到这个字符串
也就是说:
a->b, 传一字符串
b->C 同样传上一个传来的字符串,
此时,在 C中这个字符串就取不出来了。


sf:=''D:\aa.cfg'' //假设文件名
PostMessage(Handle, WM_ViewCD,Integer(PChar(sf)),0);
//或者
PostMessage(Handle, WM_ViewCD,Integer(PChar(sf)),1);

procedure TfmMainForm.WMViewCD(var Msg: TMessage);
var
i:integer;
sf:string;
begin
sf:=PChar(Msg.WParam);//--->sf:=''D:\aa.cfg''
with TfmViewCD.Create(self) do
try
setParam(sf);
if ShowModal<>mrok then Exit;
i:=AttribID;
finally
Release;
end;

case msg.LParam of
0: PostMessage(handle,WM_BrowseCD,Msg.WParam,i);
1: PostMessage(Handle,WM_ExportCD,Integer(PChar(sf)),i);
end;
end;

procedure TfmMainForm.WMExportCD(var Msg: TMessage);
begin
with TfmExportData.Create(Self) do
try


FatbID:=Msg.LParam; //确定年度数据位置专用
FDataFile:=PChar(Msg.WParam); //发生了变化不是 sf:=''D:\aa.cfg''
showmessage(fdatafile);
ShowModal;
finally
Release;
end;
end;

procedure TfmMainForm.WMBrowseCD(var Msg: TMessage);
begin
with TfmBrowseData.Create(Self) do
try
FatbID:=Msg.LParam; //确定年度数据位置专用
FDataFile:=PChar(Msg.WParam); //发生了变化不是 sf:=''D:\aa.cfg''
showmessage(fdatafile);
ShowModal;
finally
Release;
end;
end;

2楼: 大家都去睡觉了吗? 如手机进销存管理软件

3楼: unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private


{ Private declarations }
procedure AcceptStr(var msg:TMessage);Message wm_User+2008;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AcceptStr(var msg:TMessage);
begin
memo1.Lines.Add(string(msg.WParam ));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p:^string;
begin
new(p);
p^:= edit1.Text;
PostMessage(self.Handle, wm_User+2008,integer(p^),1);
end;

end.
这样就可以了

4楼: var
p:^string;
begin
new(p);
p^:= edit1.Text;
PostMessage(self.Handle, wm_User+2008,integer(p^),1);
end;

我不想转换类型,因为 sf 是传递过来的类型.

5楼: 改成这样算了。

procedure TfmMainForm.WMViewCD(var Msg: TMessage);
var
i:integer;
sf:string;
begin
// pchar to String ==> copy
// sring to Pchar ==> link
sf:=pchar(Msg.WParam);

with TfmViewCD.Create(self) do
try
setParam(sf);


if ShowModal<>mrok then Exit;
i:=AttribID;
finally
Release;
end;

case msg.LParam of
0: begin
with TfmBrowseData.Create(Self) do
try
FatbID:=i; //确定年度数据位置专用
FDataFile:=sf;
ShowModal;
finally
Release;
end;

end;
1: begin
with TfmExportData.Create(Self) do
try
FatbID:=i; //确定年度数据位置专用
FDataFile:=sf;
ShowModal;
finally
Release;
end;
end;
end;

end;

具体是因为:
// pchar to String ==> copy
// sring to Pchar ==> link

6楼: 就这样结了哦。