下面是我的回答:
vardt: tyourstruct;
procedure t***x.wmcopydata(var message: twmcopydata);
varp: pchar;
begin
p :=message.lpdata;
move(p^, dt.a, sizeof(integer));
inc(p, sizeof(integer));
move(p^, dt.b, sizeof(integer));
inc(p, sizeof(integer));
getmem(dt.pfilestr, strlen(p) + 1);
move(p^, dt.pfilestr^, strlen(p) + 1);
end;
public
procedure mymessage(var t:twmcopydata);message wm_copydata;
end;
varform2: tform2;
implementation
procedure tform2.mymessage(var t: twmcopydata);
begin
edit1.text:=strpas(t.copydatastruct^.lpdata);//接受資料並顯示。
end;
procedure tform1.speedbutton1click(sender: tobject);
var ds: tcopydatastruct;
hd: thandle;
begin
ds.cbdata := length(edit1.text) + 1;
getmem(ds.lpdata, ds.cbdata); //為傳遞的資料區分配記憶體
strcopy(ds.lpdata, pchar(edit1.text));
hd := findwindow(nil, 'form2'); // 獲得接受視窗的控制代碼
if hd <> 0 then
sendmessage(hd, wm_copydata, handle,
cardinal(@ds)) // 傳送wm_copydata訊息
else
showmessage('目標視窗沒找到!');
freemem(ds.lpdata); //釋放資源
end;
下面是共享記憶體法
unit ccc;
inte***ce
uses
windows, messages, sysutils,
classes, graphics, controls, forms,
dialogs,shellapi, stdctrls, buttons;
const
wm_baricon=wm_user+200;
type
tform1 = class(tform)
btnwrite: tbitbtn;
btnread: tbitbtn;
editwrite: tedit;
editread: tedit;
procedure formcreate(sender: tobject);
procedure btnwriteclick(sender: tobject);
procedure btnreadclick(sender: tobject);
private
hmapfile&: thandle;
mapfilepointer: pointer;
public
end;
varform1: tform1;
implementation
procedure tform1.formcreate(sender: tobject);
begin
$ffffffff, // 特殊記憶體對映控制代碼
nil, page_readwrite, 0,10000,
if hmapfile <> 0 then
mapfilepointer := mapviewoffile (
hmapfile, // 上面映象檔案的控制代碼
file_map_all_access,
0, 0, 0) // 訪問整個映象檔案
else
showmessage ('hmapfile = 0');
if mapfilepointer = nil then
showmessage ('mapfilepointer = nil');
end;
procedure tform1.btnwriteclick(sender: tobject);
begin
strcopy (pchar (mapfilepointer),
pchar (editwrite.text));//把內容寫入共享記憶體
end;
procedure tform1.btnreadclick(sender: tobject);
vars: string;
begin
s := pchar (mapfilepointer);//從共享記憶體讀出內容
editread.text := s;
end;
end.
兩個窗體之間傳遞物件
public archiext archiidgetinfo string archiid return objext catch exception ex 比如 我在窗體a中有個查詢的結果集 根據結果集中的序號來點選修改,就顯示資料庫中相對應的內容 首先呢,我們要寫個方法返回一個物件,public...
兩個窗體之間的checkbox傳遞
例如有一個窗體a 和一個窗體b a上有一個checkbox b 上也有一個checkbox 執行a窗體勾選chk後調整b窗體 然後b窗體上的checkbox也被勾選上 在a窗體load事件中迴圈遍歷窗體上的checkbox 新增到list集合 a窗體listlist new list private...
兩個Fragment之間引數的傳遞
使用fragment的時候可能需要在兩個fragment之間進行引數的傳遞,開始想著可以使用sharedpreferences進行處理,想想這些簡單的引數沒有必要使用這麼麻煩的方式去實現,翻了一下fragment的api,找到一個方法就能實現像activity一樣便捷的實現引數傳遞 程式中的一段 f...
兩個windowsform之間的值傳遞
在windows form之間傳值,我總結了有四個方法 全域性變數 屬性 窗體建構函式和delegate。第一個全域性變數 這個最簡單,只要把變數描述成static就可以了,在form2中直接引用form1的變數,如下 在form1中定義一個static變數public intform2中的鈕釦按鈕...
兩個視窗之間資訊的傳遞 C
下面有個例子 我要將 form1 中的 textboxinform1 的內容讀到 form2 的 textboxinform2 中 我有兩種方法介紹給大家,隨便看看吧!第一種,先在 from2中新增一個全域性變數form1msg,然後寫一個得到from1msg的方法,如下 private strin...