[問題] 動態TForm使用事件處理器

作者: Leeng (Leeng)   2014-07-10 10:18:35
開發平台(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???
謝謝
作者: scwg ( )   2014-07-10 11:57:00
把 mFrm 存到 _Form->Tag 可以拿到所有元件不過原始程式碼有幾個地方變數名好像跑掉了 (Form1? Frm?)不是很確定, 可能有更好的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com