相互聯絡的下拉框控制項設計

2021-03-31 08:56:58 字數 872 閱讀 6923

在應用程式的介面中,經常可以看到相互關聯的下拉框組出現。比如查詢條件一類應用,設定查詢條件時,經常是第乙個下拉框中含有待查詢的專案,選中其中的乙個專案,第二個下拉框中的選項變為對應於該專案型別的運算子,第三個下拉框中的選擇變為對應於該項目的可選值。

一般的,這種關聯關係的處理都是放在下拉框控制項所在的對話方塊等容器視窗中。通過第乙個下拉框的selectchange通知訊息,根據選中的專案,對後面相關的下拉框進行處理。這樣做的不好之處是,下拉框控制項之間的相互關係放到容器類中來處理,容器類的**就會顯得比較亂;而且這些下拉框基本失去的重用的可能。

基於上面的分析,我寫了些下拉框類,通過observer模式來把下拉框控制項之間的互動放到它們自己的類中來實現,在容器類中,只負責為下拉框的資料來源賦值,並處理它們之間的關係。具體的**大概如下:

typedef map > ob_map;   // 觀察者的資料來源型別

typedef map sub_map;  // 主題的資料來源型別

typedef cmapmfc_sub_map; // 主題賦值資料來源型別,為了mfc下賦值方便,採用cmap

// 觀察者下拉框

class cob***bobox : public c***bobox

;// 主題下拉框

class csub***bobox : public c***bobox

;具體的實現,這裡就不贅述了,無非是一些stl和cstring/cstringarray之間的操作

外部使用的時候,可以寫成類似下面的函式:

void c***dlg::init***bo(void)

這樣當第乙個下拉框選擇1或者hello時,後兩個下拉框就會根據其選擇來顯示對應的運算子和可選值。而且在主對話方塊c***dlg中,只要定義資料源和關係即可,比較清楚。

FlexBox很好用的下拉框控制項

最近發現了乙個好用的開源下拉框控制項,以前用的select控制項有個弱點就是沒有橫向滾動條,當某個item很長的時候,就不能完全顯示。flexbox控制項也是基於jquery封裝的控制項,使用起來很方便,下面簡要介紹下該控制項的使用。該控制項除了需要jquery的js檔案還需要jquery.flex...

下拉框的繫結

開發工具與關鍵技術 vs2015 mvc下拉框的繫結,我們經常用到,那麼我這裡就講講下拉框繫結的詳細過程,首先我們先建立乙個select標籤,然後我select標籤給予id好方便後面的操作。然後我們可以建立乙個方法,因為下拉框的繫結很多地方都會用到,那麼我們可以構建乙個下拉框函式方便全域性使用,函式...

select獲取下拉框的值 下拉框預設選中

本文主要介紹select下拉框的相關方法。1.通過id獲取下拉框的value和文字值 例如 數字1數字2 numbers option selected val 獲取到下拉框被選中的optionde value值 2 numbers option selected text 獲取到下拉框被選中的op...