用C++ Builder建立組合框

來源:互聯網
上載者:User

本文介紹了在Win 98環境下,如何利用C++ Builder和Windows的Api函數建立滿足使用者特定需求的Combo框,並且通過Api函數擴充了C++ Builer標準組件的功能。

在C++ Builder 下,其所帶的Combo控制項當內容發生變化時將調用OnChange的Combo1Change事件控制代碼。這時事件控制代碼將向系統發送一條基於Combo的CB_FINDSTRING訊息,在訊息中傳遞編輯字串內容。該訊息的SendMessage傳回值是下拉框中第一個匹配條目的Index值,如果在下拉式清單方塊中找到相匹配的條目,Comobo1Change控制代碼將發送一條基於Combo的CB_SETEDITSEL訊息,該訊息的參數確定從插入點到字串結尾的部分將被選擇。結果是被選中的部分是作為訊息搜尋結果顯示在Combo的Text值中。

具體實現:

1、在進入C++ Builder 4.0以後,在表單上畫一個CmoboBox1,在Items中輸入anlantic faloncs、China、Japanese、Amercia等字串。

2、建立ComboBox1的OnChange控制代碼,並填入如下代碼:

  void _fastcall TForm1::ComboBox1Change(TObject *Sender)
   {
    String value = ComboBox1->Text ;
    if (lastkey == '\b' || lastkey == VK_DELETE)// 如果使用者輸入的是Delete鍵或是Tab鍵,搜尋不進行//
     {
      lastkey = 0 ;
     return ;
     }
    lastkey = 0 ;
    if (ComboBox1->SelStart != value.Length ())//如果使用者的游標在輸入字串的中間,搜尋不進行//
      return ;
    int index = SendMessage (ComboBox1->Handle, CB_FINDSTRING, -1, (LPARAM) value.c_str ()) ;
    //在下來列表框尋找與使用者輸入字串相匹配的字串的索引值//
    if (index >= 0)//如果索引值>0//
     {
     ComboBox1->ItemIndex = index ;
     SendMessage (ComboBox1->Handle, CB_SETEDITSEL, 0, MAKELPARAM (value.Length (), -1)) ;//發送CB_SETEDITSEL訊息//
     }
    }

3、建立ComboBox1的KeyDown控制代碼,並填入如下代碼:

   void _fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,TShiftState Shift)
   {
   lastkey = Key ;//儲存最後的鍵//
   }

4、在標頭檔中增加如下變數:

Private:WORD LastKey;

5、編譯運行。當使用者輸入在輸入框中輸入Chi時,便出現China整個字串。

以上方法在Pwin 98和C++Builder 4.0 Enterprise版中實現。

有時想讓控制項實現一些不大可能的功能,試試Windows的Api 函數,或許它可以讓你夢想成真。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.