[問題] 動態TForm使用事件處理器
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
BCB(XE2)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
VCL
問題(Question):
我用一個function,一次可動態產生一個TForm;該Form底下會有一個TMemo
我希望Resize該Form時,可同時調整Memo的寬高。
程式碼(Code):(請善用置底文網頁, 記得排版)
class MemoForm
{
public:
MemoForm(){}
~MemoForm(){}
TForm *_Form;
TMemo *_Memo;
};
MemoForm *CreateMemoForm(String str)
{
MemoForm *mFrm = new MemoForm;
// Implement _Form
mFrm->_Form = new TForm(Form1);
mFrm->_Form->Caption = str;
mFrm->_Form->OnResize = MemoFormResize;
// Implement _Memo
mFrm->_Memo = new TMemo(Frm->_Form);
mFrm->_Memo->Parent = mFrm->_Form;
mFrm->_Memo->ScrollBars = ssBoth;
mFrm->_Memo->Top = 0;
mFrm->_Memo->Left = 0;
mFrm->_Memo->Width = mFrm->_Form->Width - 5;
mFrm->_Memo->Height = mFrm->_Form->Height - 28;
mFrm->_Memo->Lines->Add(str);
mFrm->_Form->Show();
return mFrm;
}
void __fastcall TForm1::MemoFormResize(TObject *Sender)
{
TForm *pForm = dynamic_cast<TForm*>(Sender);
if(pForm)
{
/*pForm->_Memo->Width = _Form->Width-5;
pForm->_Memo->Height = _Form->Height-28;*/
// Compilation failed, for _Memo is not a member of TForm
}
}
有沒有辦法在事件處理器中,連結到_Memo???
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.192.2
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1404958719.A.DB0.html
※ 編輯: Leeng (60.251.192.2), 07/10/2014 10:20:06
自問自答 = =
前面implement TForm和TMemo,利用Form->Tag記錄Memo的指標
mFrm->_Form->Tag = (int)mFrm->_Memo;
Resize時再讀回來
TMemo *pMemo = (TMemo*)pForm->Tag;
pMemo->Width/Height = .......
問題勉強算是解決了,但有沒有除了tag更好的方法?
萬一Form底下有很多元件,就不可能通通存到Tag
謝謝
※ 編輯: Leeng (60.251.192.3), 07/10/2014 10:50:04
推
07/10 11:57, , 1F
07/10 11:57, 1F
有道理!!謝謝
→
07/10 11:58, , 2F
07/10 11:58, 2F
因為mFrm->_Form是在Form1底下產生的,這樣呼叫沒錯
→
07/10 11:58, , 3F
07/10 11:58, 3F
如果要把整個class傳進去,可能要在class定義event.....
先這樣吧 謝謝
※ 編輯: Leeng (60.251.192.3), 07/10/2014 12:51:35
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章