C++ builder 中關於表單的一些操作(總在最前,遍曆控制項…)

來源:互聯網
上載者:User

一、讓視窗總是在最前面
    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;
       }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.