程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> TForm常用技巧

TForm常用技巧

編輯:關於C++

一、讓窗口總是在最前面

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;
     }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved