如何控制或傳變數到另一個視窗的StringGrid ? |
尚未結案
|
Funtaaa
一般會員 發表:1 回覆:3 積分:0 註冊:2005-10-23 發送簡訊給我 |
大家好
我有2個form(Main/List) 希望點了Main的Work03Btn後
能夠在List中的StringGrid記錄下當時資料
其中參考了
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27080
不過compiler在Main的struct宣告處就卡住了@@
以下是我的程式部份,請指教!(修改過) //---------Main.cpp部分-------------
typedef struct works //自訂工作struct
{
char name[10];
AnsiString date;
}WORK; //宣告Work struct //--------------------------------------------------------------------------- void __fastcall TForm1::N4Click(TObject *Sender)
{
Form2->Show();
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{
//---傳遞Struct Work
HWND hWnd=FindWindow(NULL, "ReceiveForm");
if(hWnd)
{
WORK work03;
lstrcpy(work03.name, "工作三");
work03.date=DateTimeToStr(Now());
COPYDATASTRUCT CopyData;
CopyData.dwData=0;
CopyData.cbData=sizeof(WORK);
CopyData.lpData=&work03; SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&CopyData);
}
}
//--------List.cpp部分------------------
typedef struct works //自訂工作struct
{
char name[10];
AnsiString date;
}WORK; //宣告Work struct vector
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
|
Funtaaa
一般會員 發表:1 回覆:3 積分:0 註冊:2005-10-23 發送簡訊給我 |
謝謝!! 不過後來被要求要有回傳值(停在Main的work struct建構子}後方)
[C Warning] Main.cpp(20): W8070 Function should return a value
是要求我回傳給List的Form嗎? 另外在 lstrcpy(work03.name, "工作三"); 的地方也有錯誤@@"
[C Error] Main.cpp(49): E2034 Cannot convert 'AnsiString' to 'char *'
[C Error] Main.cpp(49): E2342 Type mismatch in parameter 'lpString1' (wanted 'char *', got 'AnsiString')
是否應該在宣告name與date時必須宣告成char型態? 發表人 - funtaaa 於 2005/10/23 23:01:39 發表人 - funtaaa 於 2005/10/23 23:08:29
|
Funtaaa
一般會員 發表:1 回覆:3 積分:0 註冊:2005-10-23 發送簡訊給我 |
不好意思一直問笨問題...
剛剛已經用char宣告加上lstrcopy() 解決了一些問題(修改於主題) 最後(希望是...)想請問
void __fastcall TForm2::WMCopyData(TMessage& Message)
{
COPYDATASTRUCT *CopyData=(COPYDATASTRUCT*)(Message.LParam);
if(CopyData->cbData==sizeof(Work))
{
Work work03;
CopyMemory(&work03, CopyData->lpData, CopyData->cbData);
ShowMessage(work03.name);
ShowMessage(DateTimeToStr(work03.date));
}
//---新增工作資料
Work.push_back(works());
index=Work.size()-1;
Work[index].name=work03.name;
Work[index].date=DateTimeToStr(work03.date);
Button3Click(Sender);//顯示變動過的資料
}中的erro message內容:
[C++ Error] WorkList.cpp(74): E2379 Statement missing ;(卡在Work work3)
[C++ Error] WorkList.cpp(75): E2451 Undefined symbol 'work03'
[C++ Error] WorkList.cpp(84): E2451 Undefined symbol 'Sender'
這是什麼意思呢??
其實不太懂>是否為一個物件? 發表人 -
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
[C++ Error] WorkList.cpp(75): E2451 Undefined symbol 'work03'
[C++ Error] WorkList.cpp(84): E2451 Undefined symbol 'Sender'
這二行意思是'work03'、'Sender'未定義的符號,表示你沒在程式裡去定義這二個變數。 " WMCopyData(TMessage& Message) "==>是否為一個物件?
這是一個Method,主要是用在處理接收到WM_COPYDATA訊息的程式。
vector紅色的字體是修改過。 |
Funtaaa
一般會員 發表:1 回覆:3 積分:0 註冊:2005-10-23 發送簡訊給我 |
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
引言: 謝謝liangnet, Thank You So Much!!!!!!!!!!!!!!! ( > >>< face="Verdana, Arial, Helvetica"> 大概…是你沒去攔下WM_COPYDATA的訊息吧! 在你的TForm2的Class裡加入protected: void __fastcall WndProc(Messages::TMessage &Message); //Override 然後這裡面的程式… void __fastcall TForm2::WndProc(Messages::TMessage &Message) { if (Message.Msg == WM_COPYDATA) WMCopyData(Message); //處理WM_COPYDATA訊息 Form::WndProc(Message); } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |