如何在Active Form上呼叫另一個Active Form |
答題得分者是:gemi0305
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
照此修改,
這是拿之前叫你參考的那個程式。
你在ActiveForm上加兩個Edit,在另一個Form上也加兩個Edit, 然後當你開始這個Form給值,在關閉這個Form時,
它就會把Form上兩個Edit的值傳給ActiveForm上的兩個Edit上了。 記得,edit1是傳文字,edit2是傳數字,別在edit2上打非數字的東西。 我只有說明一種傳值的方式,請抓住精神在「共用全域變數」,
其實還有很多變化的寫法,請好好思考一下。
< class="code">
//---------------------------------------------------------------------------
// MyStruct.h
#ifndef __MYSTRUCT_H__
#define __MYSTRUCT_H__ typedef struct _MYSTRUCT
{
char szChar[16];
int iInt;
} MyStruct; #endif // __MYSTRUCT_H__
//---------------------------------------------------------------------------
// ActiveFormX01Impl1.cpp
#include "ActiveFormX04Impl1.h"
#include "Unit1.h"
#include "MyStruct.h" TForm1 *f1;
MyStruct ms;
void __fastcall TActiveFormX01::Button1Click(TObject *Sender)
{
lstrcpy(ms.szChar, "ActiveForm");
ms.iInt=0;
f1=new TForm1(Application);
f1->ShowModal();
Edit1->Text=AnsiString((char*)ms.szChar);
Edit2->Text=IntToStr(ms.iInt);
}
void __fastcall TActiveFormX01::Button2Click(TObject *Sender)
{
ShowMessage(ms.szChar);
ShowMessage(IntToStr(ms.iInt));
}
//---------------------------------------------------------------------------
// Unit1.cpp
#include "Unit1.h"
#include "MyStruct.h" extern MyStruct ms;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(ms.szChar);
ShowMessage(IntToStr(ms.iInt));
lstrcpy(ms.szChar, Edit1->Text.c_str());
ms.iInt=Edit2->Text.ToInt();
} 國泰平安 發表人 - Gemi0305 於 2003/08/05 19:04:51
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
gemi0305您好,謝謝您這麼幫我了,我看懂了,不過還有一個小問題,以下:
// Unit1.cpp
#include "Unit1.h"
#include "MyStruct.h" extern MyStruct ms;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(ms.szChar);
ShowMessage(IntToStr(ms.iInt));
lstrcpy(ms.szChar, Edit1->Text.c_str());
ms.iInt=Edit2->Text.ToInt();
Form1->Close();//----->加入這一行會有問題嗎?
} 我的程式會有這樣的錯誤訊息:
Access violation at address 40056CB1 in module 'VCL50.BPL'. Read of address 000002CC. 這是怎麼一回事呢?? 謝謝 發表人 - alfa 於 2003/08/06 12:10:33
|
ALFA
一般會員 發表:8 回覆:11 積分:3 註冊:2003-07-26 發送簡訊給我 |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
ALFA你好, 我是現在才看到你回應文章,不好意思,
才是現在才看到你問題,不過後來你已經自已找到解決方法,
恭喜了~
剛剛看了一下,你呼叫一個Form出來,
如果只是要做輸入值的動作,其實可以用另一種方法,
我也在ActiveForm常用的,因為可以不用怕錯按"倒退鍵"~
就是用InputBox,如: Edit1->Text=InputBox("請輸入姓名","姓名 : ","");
Edit2->Text=InputBox("請輸入電話","電話 : ",""); 可以放在ButtonClick或是EditClick或是其他,看你怎麼用,
你也可試試看 國泰平安
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |