[CB]TForm应用技巧
生活随笔
收集整理的這篇文章主要介紹了
[CB]TForm应用技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、讓窗口總是在最前面
Form 的FormStyle屬性設置為fsStayOnTop值。
二、動態調用窗體Form
在缺省情況下,由File/New Form生成添加入項目文件中的窗體都具有"Auto Create"(自動創建)的特性。即只要程序運行,該窗體就存在于內存中了,不管當前它是否被調用。具有這種特性的窗體一般適用于窗體屬性比較固定、經常被調用的情況。其優點是速度快,缺點是占用內存。在實際程序設計中,會遇見大量類似對話框功能的窗體,它們用于顯示狀態或輸入信息,僅須在程序中調用一下,完成其功能就行了,無需常駐內存。這時可以通過選擇Project/Options/Forms,將"Auto--Create forms "欄中相應的窗體,如Form1,用" >"鍵移動到"Available forms"欄中,并在程序需調用該窗體處,加入下列語句:
TForm1 *myform=new TForm1(this);
myform- >ShowModal();
delete myform;
窗體Form1僅是在需要調用時才調入內存,調用完成后,即用delete清除出內存。這樣可減少程序對內存資源的占用。
三、遍歷窗體控件的方法
要訪問或修改窗體上的控件,方法很簡單,以TEdit為例子:
Edit1- >Text="";
Edit2- >Text="";
但如果窗體上有十來個像Edit1這樣的控件,需要進行相同的初始化,用上面的方法一個一個地進行,豈不麻煩!所以有必要掌握遍歷窗體控件的方法。在介紹該方法之前,讓我們先了解一下窗體Form的Components和Controls 屬性。參見表一。
表一
屬性 類型 說明
ComponentCount Int 目前Form上各類控件的總數
Components TCompont* 目前Form上指向所有控件的數組
ControlCount Int 目前Form上某一子區域上各類控件的總數
Controls TControl* 目前Form上指向某一子區域上所有控件的數組
以圖一為例(圖略)說明,Form1 的ComponentCount=6,而Panel1的ControlCount=4.,
其中:
數組 對象
Components[0] Panel1
Components[1] Label1
Components[2] Edit1
Components[3] Label2
Components[4] Edit2
Components[5] Button1
數組 對象
Controls[0] Label1
Controls[1] Edit1
Controls[2] Label2
Controls[3] Edit2
下面這段代碼完成了對Panel1上所有TEdit控件的遍歷初始化。讀者稍加修改,即可對其它控件進行遍歷。這里有一個小技巧,我們把需要進行初始化的控件放置在了一Panel1上,與不需要初始化的控件區分開來,這樣便于編程。
AnsiString namestring="TEdit";
for(int i=1;i< Panel1- > ControlCount;i++)
{
if(Panel1- > Controls[i]- > ClassNameIs(namestring))
{
TEdit *p=dynamic_cast < TEdit* > (Panel1- >Controls[i]);
P- >Text="";
}
}
四、不規則窗口
1.在窗口定義中,加入HRGN hWndRgn;
2.在TForm::OnCreate()消息函數最后,加入下面的代碼:
hWndRgn=::CreateEllipticRgn(0,0,Width,Height);
::SetWindowRgn(hWndRgn,TRUE);
3.設置TForm的屬性為無標題,無邊框。
4.編譯連接應用程序,就可以看到一個橢圓形窗口。
五、MDI Form
1.Application->CreateForm(__classid(Tjjcginput),
&jjcginput);
后不用在使用顯示Form的語句就可以顯示出來了。
2.form的onclose事件必須用下面語句釋放空間:
void
__fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
Form 的FormStyle屬性設置為fsStayOnTop值。
二、動態調用窗體Form
在缺省情況下,由File/New Form生成添加入項目文件中的窗體都具有"Auto Create"(自動創建)的特性。即只要程序運行,該窗體就存在于內存中了,不管當前它是否被調用。具有這種特性的窗體一般適用于窗體屬性比較固定、經常被調用的情況。其優點是速度快,缺點是占用內存。在實際程序設計中,會遇見大量類似對話框功能的窗體,它們用于顯示狀態或輸入信息,僅須在程序中調用一下,完成其功能就行了,無需常駐內存。這時可以通過選擇Project/Options/Forms,將"Auto--Create forms "欄中相應的窗體,如Form1,用" >"鍵移動到"Available forms"欄中,并在程序需調用該窗體處,加入下列語句:
TForm1 *myform=new TForm1(this);
myform- >ShowModal();
delete myform;
窗體Form1僅是在需要調用時才調入內存,調用完成后,即用delete清除出內存。這樣可減少程序對內存資源的占用。
三、遍歷窗體控件的方法
要訪問或修改窗體上的控件,方法很簡單,以TEdit為例子:
Edit1- >Text="";
Edit2- >Text="";
但如果窗體上有十來個像Edit1這樣的控件,需要進行相同的初始化,用上面的方法一個一個地進行,豈不麻煩!所以有必要掌握遍歷窗體控件的方法。在介紹該方法之前,讓我們先了解一下窗體Form的Components和Controls 屬性。參見表一。
表一
屬性 類型 說明
ComponentCount Int 目前Form上各類控件的總數
Components TCompont* 目前Form上指向所有控件的數組
ControlCount Int 目前Form上某一子區域上各類控件的總數
Controls TControl* 目前Form上指向某一子區域上所有控件的數組
以圖一為例(圖略)說明,Form1 的ComponentCount=6,而Panel1的ControlCount=4.,
其中:
數組 對象
Components[0] Panel1
Components[1] Label1
Components[2] Edit1
Components[3] Label2
Components[4] Edit2
Components[5] Button1
數組 對象
Controls[0] Label1
Controls[1] Edit1
Controls[2] Label2
Controls[3] Edit2
下面這段代碼完成了對Panel1上所有TEdit控件的遍歷初始化。讀者稍加修改,即可對其它控件進行遍歷。這里有一個小技巧,我們把需要進行初始化的控件放置在了一Panel1上,與不需要初始化的控件區分開來,這樣便于編程。
AnsiString namestring="TEdit";
for(int i=1;i< Panel1- > ControlCount;i++)
{
if(Panel1- > Controls[i]- > ClassNameIs(namestring))
{
TEdit *p=dynamic_cast < TEdit* > (Panel1- >Controls[i]);
P- >Text="";
}
}
四、不規則窗口
1.在窗口定義中,加入HRGN hWndRgn;
2.在TForm::OnCreate()消息函數最后,加入下面的代碼:
hWndRgn=::CreateEllipticRgn(0,0,Width,Height);
::SetWindowRgn(hWndRgn,TRUE);
3.設置TForm的屬性為無標題,無邊框。
4.編譯連接應用程序,就可以看到一個橢圓形窗口。
五、MDI Form
1.Application->CreateForm(__classid(Tjjcginput),
&jjcginput);
后不用在使用顯示Form的語句就可以顯示出來了。
2.form的onclose事件必須用下面語句釋放空間:
void
__fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
總結
以上是生活随笔為你收集整理的[CB]TForm应用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典:某程序员手机里保存的五十条牛B短信
- 下一篇: cd库图像处理php,PHP图像处理类库