精华内容
下载资源
问答
  • 列表框控件List Control设置行高

    千次阅读 2017-04-11 17:02:50
     简介   MFC的标准列表框控件并没有给出设置每一行高度的接口。 有两种方法可以设置: ...1.取巧的方法:为列表框插入图标,每一行的高度自动变为图标...1.在对话框上拖拉出一个List Control 控件,并设置属性Ow
    

    简介

     

    MFC的标准列表框控件并没有给出设置每一行高度的接口。

    有两种方法可以设置:

    1.取巧的方法:为列表框插入图标,每一行的高度自动变为图标的高度。这个方法很快,但总觉得有点别扭,且不好移植。所以我没用这种方法。

    2.自绘列表框,这正是本文要说的。

     

    效果预览

     

     

     

    实现过程

     

    1.在对话框上拖拉出一个List Control 控件,并设置属性Owen Draw Fixed属性为TRUR;(重载代码在本文最后)

     

    2.为工程添加一个MFC类(这里我假设类名叫CMyListCtrl),派生于MFC的CListCtrl类。并重载CListCtrl::DrawItem方法;

     

    3.为CMyListCtrl类添加变量int m_nRowHeight变量,用来保存指定的行高度;

     

    4.在CMyListCtrl的MESSAGE_MAP中添加宏ON_WM_MEASUREITEM_REFLECT()

    具体是到CMyLsitCtrl的cpp文件中添加,看起来就像这样:

    BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
         ON_WM_MEASUREITEM_REFLECT()
    END_MESSAGE_MAP()


     

    5.重载CMyListCtrl::MeasureItem方法。这一步需要靠手工添加,类向导并不能帮你。注意这一步是给CMyListCtrl添加处理函数,不要用类向导。

    在函数中设置行高度,就像这样:

    1. void CMyListCtrl::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)  
    2. {  
    3.     lpMeasureItemStruct->itemHeight = m_nRowHeight;  
    4. }  
    void CMyListCtrl::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
    {
    	lpMeasureItemStruct->itemHeight = m_nRowHeight;
    }


    PS:4,5步为什么可以这么做?这涉及到消息的反射机制,我暂时也不清楚。

     

    6.为CMyListCtrl类添加一个接口方法用来设置m_nRowHeight的高度;

    1. void CMyListCtrl::SetRowHeight(int nHeight)  
    2. {  
    3.     m_nRowHeight = nHeight;  
    4.     //如果没有下面的代码,设置并不能奏效  
    5.     CRect rcWin;  
    6.     GetWindowRect(&rcWin);  
    7.     WINDOWPOS wp;  
    8.     wp.hwnd = m_hWnd;  
    9.     wp.cx = rcWin.Width();  
    10.     wp.cy = rcWin.Height();  
    11.     wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;  
    12.     SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);  
    13. }  
    void CMyListCtrl::SetRowHeight(int nHeight)
    {
    	m_nRowHeight = nHeight;
    	//如果没有下面的代码,设置并不能奏效
    	CRect rcWin;
    	GetWindowRect(&rcWin);
    	WINDOWPOS wp;
    	wp.hwnd = m_hWnd;
    	wp.cx = rcWin.Width();
    	wp.cy = rcWin.Height();
    	wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;
    	SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
    }

     

    7.为在1中添加的列表框控件添加一个变量m_MyListCtrl,类型为CMyListCtrl。在对话框的初始化函数中调用m_MyListCtrl.SetRowHeight(60)。

     

    8.加入其它代码,编译、运行,如果没有什么问题,你可以看到设置行高度起作用了。

     

     

    重载的CListCtrl::DrawItem代码如下,你可以根据需要修改

    1. void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)   
    2. {  
    3. TCHAR lpBuffer[256];  
    4.   
    5. LV_ITEM lvi;  
    6.   
    7. lvi.mask = LVIF_TEXT | LVIF_PARAM ;  
    8. lvi.iItem = lpDrawItemStruct->itemID ;   
    9. lvi.iSubItem = 0;  
    10. lvi.pszText = lpBuffer ;  
    11. lvi.cchTextMax = sizeof(lpBuffer);  
    12. VERIFY(GetItem(&lvi));  
    13.   
    14. LV_COLUMN lvc, lvcprev ;  
    15. ::ZeroMemory(&lvc, sizeof(lvc));  
    16. ::ZeroMemory(&lvcprev, sizeof(lvcprev));  
    17. lvc.mask = LVCF_WIDTH | LVCF_FMT;  
    18. lvcprev.mask = LVCF_WIDTH | LVCF_FMT;  
    19.   
    20. for ( int nCol=0; GetColumn(nCol, &lvc); nCol++)  
    21. {  
    22.    if ( nCol > 0 )   
    23.    {  
    24.     // Get Previous Column Width in order to move the next display item  
    25.     GetColumn(nCol-1, &lvcprev) ;  
    26.     lpDrawItemStruct->rcItem.left += lvcprev.cx ;  
    27.     lpDrawItemStruct->rcItem.right += lpDrawItemStruct->rcItem.left ;   
    28.    }  
    29.   
    30.    // Get the text   
    31.    ::ZeroMemory(&lvi, sizeof(lvi));  
    32.    lvi.iItem = lpDrawItemStruct->itemID;  
    33.    lvi.mask = LVIF_TEXT | LVIF_PARAM;  
    34.    lvi.iSubItem = nCol;  
    35.    lvi.pszText = lpBuffer;  
    36.    lvi.cchTextMax = sizeof(lpBuffer);  
    37.    VERIFY(GetItem(&lvi));  
    38.   
    39.    CDC* pDC;  
    40.    pDC = CDC::FromHandle(lpDrawItemStruct->hDC);  
    41.   
    42.    if ( lpDrawItemStruct->itemState & ODS_SELECTED )  
    43.    {  
    44.     pDC->FillSolidRect(&lpDrawItemStruct->rcItem, GetSysColor(COLOR_HIGHLIGHT)) ;   
    45.     pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ;  
    46.    }  
    47.    else  
    48.    {  
    49.     pDC->FillSolidRect(&lpDrawItemStruct->rcItem, GetSysColor(COLOR_WINDOW)) ;  
    50.     pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT)) ;   
    51.    }  
    52.     
    53.    pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));  
    54.   
    55.    UINT   uFormat    = DT_LEFT ;  
    56.   
    57.    ::DrawText(lpDrawItemStruct->hDC, lpBuffer, strlen(lpBuffer),   
    58.     &lpDrawItemStruct->rcItem, uFormat) ;  
    59.   
    60.    pDC->SelectStockObject(SYSTEM_FONT) ;  
    61. }  
    62. }  
    void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    TCHAR lpBuffer[256];
    
    LV_ITEM lvi;
    
    lvi.mask = LVIF_TEXT | LVIF_PARAM ;
    lvi.iItem = lpDrawItemStruct->itemID ; 
    lvi.iSubItem = 0;
    lvi.pszText = lpBuffer ;
    lvi.cchTextMax = sizeof(lpBuffer);
    VERIFY(GetItem(&lvi));
    
    LV_COLUMN lvc, lvcprev ;
    ::ZeroMemory(&lvc, sizeof(lvc));
    ::ZeroMemory(&lvcprev, sizeof(lvcprev));
    lvc.mask = LVCF_WIDTH | LVCF_FMT;
    lvcprev.mask = LVCF_WIDTH | LVCF_FMT;
    
    for ( int nCol=0; GetColumn(nCol, &lvc); nCol++)
    {
       if ( nCol > 0 ) 
       {
        // Get Previous Column Width in order to move the next display item
        GetColumn(nCol-1, &lvcprev) ;
        lpDrawItemStruct->rcItem.left += lvcprev.cx ;
        lpDrawItemStruct->rcItem.right += lpDrawItemStruct->rcItem.left ; 
       }
    
       // Get the text 
       ::ZeroMemory(&lvi, sizeof(lvi));
       lvi.iItem = lpDrawItemStruct->itemID;
       lvi.mask = LVIF_TEXT | LVIF_PARAM;
       lvi.iSubItem = nCol;
       lvi.pszText = lpBuffer;
       lvi.cchTextMax = sizeof(lpBuffer);
       VERIFY(GetItem(&lvi));
    
       CDC* pDC;
       pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    
       if ( lpDrawItemStruct->itemState & ODS_SELECTED )
       {
        pDC->FillSolidRect(&lpDrawItemStruct->rcItem, GetSysColor(COLOR_HIGHLIGHT)) ; 
        pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ;
       }
       else
       {
        pDC->FillSolidRect(&lpDrawItemStruct->rcItem, GetSysColor(COLOR_WINDOW)) ;
        pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT)) ; 
       }
      
       pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));
    
       UINT   uFormat    = DT_LEFT ;
    
       ::DrawText(lpDrawItemStruct->hDC, lpBuffer, strlen(lpBuffer), 
        &lpDrawItemStruct->rcItem, uFormat) ;
    
       pDC->SelectStockObject(SYSTEM_FONT) ;
    }
    }


     

     

     参考链接:http://www.vckbase.com/index.php/wv/1550

    http://www.360doc.com/content/10/1026/21/799_64276847.shtml

    http://www.codeproject.com/Articles/1401/Changing-Row-Height-in-an-owner-drawn-Control

    http://www.codeproject.com/Articles/295909/Ownerdraw-listctrl-with-transparent-background-and

     

     

    展开全文
  • 组合框和列表框都可以在界面上同时显示多项内容,并且允许用户选中其中的某项内容,列表框还允许同时选择多项。这两种控件的使用,有很多相似之处;2.3.1 技术要点: Windows 中预先定义了一系列“CB_ ”开头的消息...

    组合框和列表框都可以在界面上同时显示多项内容,并且允许用户选中其中的某项内容,列表框还允许同时选择多项。这两种控件的使用,有很多相似之处;

    2.3.1 技术要点:

    • Windows 中预先定义了一系列“CB_ ”开头的消息,用于向组合框发送命令。例如向控件发送“CB_ ADDSTRING”,就可以在控件的下拉列表中添加新项;
    • 当组合框控件中有通知事件发生时,控件会向父窗口发出以“CBN_ ”开头的通知消息。例如“CBN_ SELCHANGE”消息代表控件的当前选中项发生了改变;
    • Windows 中预先定义了一系列“LB_ ”开头的消息,用于向列表框发送命令,比如“LB_ ADDSTRING”消息可以向控件中添加新项;
    • 当列表框中发生事件时,控件会向父窗口发送以“LBN_ ”开头的通知消息,比如“LBN_ DBLCLK”代表用户在控件中双击了鼠标;
    • 在 MFC 中,组合框的封装类是 CComboBox,列表框的封装类是 CListBox 。通过调用这些封装类的方法,即可实现对控件的操作。但在控件内部,还是通过发送消息的方法实现对控件操作;

    2.3.2 实例步骤:

    在本节的实例中,通过一个应用程序演示组合框和列表框的使用,实例步骤如下所示:

    1. 新建一个基于对话框的 MFC 应用程序,命名为“ComboBoxDemo”;这里写图片描述
    2. 在主对话框上添加一个组合框控件,将其ID修改为“IDC_CMB_DEMO”去掉其“Sort”风格,并通过类向导为控件添加一个控件型变量,变量名称为“m_cmb_demo”;这里写图片描述这里写图片描述
    3. 在主对话框上添加一个列表框控件,将其ID修改为“IDC_LST_DEMO”,去掉其“Sort”风格,将其“Selection”属性改为“Single”,并通过类向导为控件添加一个名称为“m_lst_demo”的控件型变量;这里写图片描述这里写图片描述
    4. 在主对话框中添加一个ID为“IDC_EDT_TEXT”的文本框,用于输入新项内容;这里写图片描述
    5. 在主对话框上添加两个按钮控件,控件ID分别为“IDC_BTN_ADD”和“IDC_BTN_DELETE”,控件文本分别为“添加”和“删除所选”。并通过类向导为按钮添加单击事件响应函数,函数代码如下所示;
    //“添加”按钮的响应函数
    void CComboBoxDemoDlg::OnBtnAdd() 
    {
        CString strText;
        //取得用户输入
        GetDlgItemText(IDC_EDT_TEXT, strText);
        if(strText.GetLength() > 0)
        {
            //向组合框添加字符串
            m_cmb_demo.AddString(strText);
            //选中刚刚添加的项
            m_cmb_demo.SetCurSel(m_cmb_demo.GetCount() - 1);
            //向列表框添加字符串
            m_lst_demo.AddString(strText);
            //选中刚刚添加的项
            m_lst_demo.SetCurSel(m_lst_demo.GetCount() - 1);
        }
    }
    //“删除”按钮的响应函数
    void CComboBoxDemoDlg::OnBtnDelete() 
    {
        int nIndex;
        //取得组合框的当前所选,如果nIndex等于-1,代表没有选中项
        nIndex = m_cmb_demo.GetCurSel();
        if(nIndex > -1)
        {
            //如果有选中项,删除该项
            m_cmb_demo.DeleteString(nIndex);
            //让控件选中下一项
            if(nIndex < m_cmb_demo.GetCount())
                m_cmb_demo.SetCurSel(nIndex);
            else
                m_cmb_demo.SetCurSel(0);
        }
        //取得列表框的当前所选
        nIndex = m_lst_demo.GetCurSel();
        if(nIndex > -1)
        {
            //如果有选中项,删除该项
            m_lst_demo.DeleteString(nIndex);
            //让控件选中下一项
            if(nIndex < m_lst_demo.GetCount())
                m_lst_demo.SetCurSel(nIndex);
            else
                m_lst_demo.SetCurSel(0);
        }
    }

    2.3.3 程序运行:

    按F5键运行程序,在文本框中输入一些字符,单击“添加”按钮,就会将输入的字符串作为新项添加到组合框的列表框中。选中组合框和列表框中的某项,单击“删除所选”按钮,控件中当前选中的项目就会被删除;这里写图片描述

    2.3.4 源程序解读:

    • 在本例中,界面上的组合框和列表框都没有选取“Sort”风格。当控件具有该风格时,每次向控件中添加新项,都会导致控件中的项目进行排序,如果项目比较多,会影响程序运行效率。所以在不需要自动排序的场合,应去掉该风格;
    • 组合框有3种外观形式,分别是“Simple”、“Dropdown”和“Drop List”,本例中使用的是默认的“Dropdown”。当控件类型为“Simple”时,控件的下拉列表框将一直显示;当控件类型为“Drop List”时,控件中的文本框为只读模式;
    • 本例中的列表框为单选模式,如果控件处于多选模式,则允许用户同时选择多个列表项。当单击一个列表项时,如果该项处于选中状态,则取消其选中状态,如果处于非选中状态,则变成选中状态;
    展开全文
  • Java界面 SWT基本组件——列表框(List)

    千次阅读 2014-03-10 15:31:27
    列表框(List)的基本样式与基础应用 本次实验要求设计一个小程序来说明列表框的一些常用方法。 程序的主要功能: 1. 单击 “>” 按钮,将左侧选中的选项转移到右侧; 2. 单击 “ 3. 单击 “>>” 按钮,将左侧所有选项...

    列表框(List)的基本样式与基础应用

    本次实验要求设计一个小程序来说明列表框的一些常用方法。

    程序的主要功能:

    1. 单击 “>” 按钮,将左侧选中的选项转移到右侧;

    2. 单击 “<” 按钮,将右侧选中的选项转移到左侧;

    3. 单击 “>>” 按钮,将左侧所有选项都转移到右侧;

    4. 单击 “<<” 按钮,将右侧所有选项都转移到左侧;

    5. 单击 "Up" 按钮,将所选的选项(右侧)向上移动一个位置;

    6. 单击 “Down” 按钮,将所选的选项(右侧)向下移动一个位置;

    在代码中,包含:

    1. 创建事件监听类,为内部类;

    2. 选项上移与下移过程中考虑边界;

    代码(无static void main(String[] args))如下:(《EclipseSWT/JFace 核心应用》清华大学出版社

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.List;
    import org.eclipse.swt.widgets.Shell;
    
    public class ListSample {
    
    	private Shell shell;
    	public ListSample(Shell sShell) {
    		
    		shell = new Shell(sShell, SWT.CLOSE);
    		
    		shell.setSize(350, 250);
    		shell.setText("ListSample");
    		
    		String itemLeft[] = new String[20];				// 定义保存左侧列表框中的数据
    		String itemright[] = new String[0];				// 定义保存右侧列表框中的数据
    		
    		for(int i = 0; i < itemLeft.length; i++)
    			itemLeft[i] = "item" + i;					// 初始化左侧字符串数组
    		
    		final List left = new List(shell, SWT.MULTI|SWT.V_SCROLL);
    														// 定义左侧列表框,可选择多个且带有滚动条
    		left.setBounds(10, 10, 100, 180);				// 设置位置和大小
    		left.setItems(itemLeft);						// 设置选项数据
    		left.setToolTipText("Choosed List");			// 设置提示
    		
    		final List right = new List(shell, SWT.MULTI|SWT.V_SCROLL);
    														// 定义右侧列表框,可选择多个且带有滚动条
    		right.setBounds(170, 10, 100, 180);
    		right.setItems(itemright);
    		right.setToolTipText("Choosed List");
    		
    		// 创建事件监听类,为内部类
    		SelectionAdapter listener = new SelectionAdapter() {
    														// 按钮单击事件处理的方法
    			public void widgetSelected(SelectionEvent e) {
    														// 取得触发事件的空间对象(按钮)
    				Button bt = (Button)e.widget;
    				if(bt.getText().equals(">"))			// 如果是“>”按钮
    					verifyValue(left.getSelection(), left, right);
    				else if(bt.getText().equals(">>"))		// 如果是“>>”按钮
    					verifyValue(left.getItems(), left, right);
    				else if(bt.getText().equals("<"))		// 如果是“<”按钮
    					verifyValue(right.getSelection(), right, left);
    				else if(bt.getText().equals("<<"))		// 如果是“<<”按钮
    					verifyValue(right.getItems(), right, left);
    				else if(bt.getText().equals("Up"))		// 如果是“Up”按钮
    				{
    					int index = right.getSelectionIndex();
    														// 获得当前选中选项的索引值
    					if(index <= 0)						// 如未选中,则返回
    						return ;
    					String currentValue = right.getItem(index);
    														// 如果选中了选项值,获得当前选项的值
    					right.setItem(index, right.getItem(index - 1));							
    					right.setItem(index - 1, currentValue);
    														// 将选中的选项与上一个选项交换值
    					right.setSelection(index - 1);		// 设定上一选项为选中状态
    				}
    				else if(bt.getText().equals("Down"))	// 如果是“Down”按钮
    				{
    														// 与“Up”按钮逻辑相同
    					int index = right.getSelectionIndex();
    					if(index >= right.getItemCount() - 1)
    						return ;
    					String currentValue = right.getItem(index);
    					right.setItem(index, right.getItem(index + 1));
    					right.setItem(index + 1, currentValue);
    					right.setSelection(index + 1);
    				}
    			}
    		};
    		
    	// 定义按钮
    		// 定义(单)右移按钮
    		Button bt1 = new Button(shell, SWT.NONE);
    		bt1.setText(">");
    		bt1.setBounds(130, 20, 25, 20);
    		bt1.addSelectionListener(listener);				// 为按钮注册事件,其他的按钮类似
    		// 定义(多)右移按钮
    		Button bt2 = new Button(shell, SWT.NONE);
    		bt2.setText(">>");
    		bt2.setBounds(130, 55, 25, 20);
    		bt2.addSelectionListener(listener);
    		// 定义(多)左移按钮
    		Button bt3 = new Button(shell, SWT.NONE);
    		bt3.setText("<<");
    		bt3.setBounds(130, 90, 25, 20);
    		bt3.addSelectionListener(listener);
    		// 定义(单)左移按钮
    		Button bt4 = new Button(shell, SWT.NONE);
    		bt4.setText("<");
    		bt4.setBounds(130, 125, 25, 20);
    		bt4.addSelectionListener(listener);
    		// 定义上移按钮
    		Button bt5 = new Button(shell, SWT.NONE);
    		bt5.setText("Up");
    		bt5.setBounds(285, 70, 40, 20);
    		bt5.addSelectionListener(listener);
    		// 定义下移按钮
    		Button bt6 = new Button(shell, SWT.NONE);
    		bt6.setText("Down");
    		bt6.setBounds(285, 105, 40, 20);
    		bt6.addSelectionListener(listener);
    		
    		shell.open();
    		
    	}
    
    	private void verifyValue(String[] selected, List from, List to) {
    		
    		for(int i = 0; i < selected.length; i++)
    		{											
    			from.remove(selected[i]);					// 从一个列表中移除该选项值													
    			to.add(selected[i]);						// 添加到另一列表中
    		}
    		
    	}
    	
    }

    List 类所使用的样式常量
    样式常量描述
    SWT.SINGLE只能选中一个选项,为默认样式
    SWT.MULTI可同时选择多个选项的列表框,按住 Ctrl 键即可多选
    SWT.H_SCROLL带有水平滚动条的多行列表框
    SWT.V_SCROLL带有垂直滚动条的多行列表框


    方法·向列表框中添加选项
    方法含义
    add(String string)向列表框的末尾添加选项
    add(String string, int index); setItem(int index, String string)向列表指定位置添加选项
    setItems(String[] items)将字符串数组添加到列表框

    方法·删除列表框中的选项
    方法含义
    remove(int index)删除指定一个索引出的选项
    remove(int[] indices)删除多个索引的选项
    remove(int start, int end)删除指定开始和结束索引值间的选项
    remove(String string)删除指定字符串的选型
    removeAll()删除列表中所有的选项

    方法·获得列表框的状态
    方法含义
    String getItem(int index)获得指定索引的选项值
    getItemCount()获得选项的总数
    String[] getItems() 获得所有的选项值
    getTopIndex()获得第一个选项的索引值
    indexOf(String string)查找是否存在指定的选项,如果存在,测返回所在的索引值
    indexOf(String string, int start)查找指定开始索引后是否存在指定的选项,如存在,则放回索引值

    方法·对列表框中已选中的选项操作方法
    方法含义
    String[] getSelection()获取当前所选中的所有选项
    getSelectionCount()获得当前选中的选项数目
    getSelectionIndex()获得当前选中选项的索引值
    int[] getSelectionIndices获得当前选中选项的索引值数组
    isSelected(int index)判断某个索引值的选项是否已被选中:true, false
    select(int index); setSelection(int index)设置指定索引值的选项为选中状态
    select(int[] indices); setSelection(int[] indices)设置指定索引值数组的选项为选中状态
    select(int start, int end); setSelection(int start, int end)设置开始索引到结束索引的选项为选中状态
    selectAll()全选
    setSelection(String[] items)设置指定字符串数组中值为选中状态
    showSelection()显示选中的方法
    deselect(int index)反选指定索引的选项
    deselect(int[] indices)反选指定索引数组的选项
    deselect(int start, int end)反选开始索引到结束索引的选项
    deselectAll()全部反选

    展开全文
  • 然而,开始的程序在执行的时候却没有错误,这就说明 列表框'string'返回的存储类型绝对不是普通高维数组。cat函数与vertcat函数对与元胞数组也是使用的。例如: a = {'1231';'sdfa'} a = '1231' 'sdfa' >>...

    edit_string = get(handles.string_edit,'string');
    if (isempty(edit_string))
        disp('Please give an string to add')
    end
    
    list_string = get(handles.listbox1,'string');   % list_string是一个元胞?是
     if (~isempty(list_string))
         set(handles.listbox1,'string',vertcat(edit_string,list_string));
    else
        set(handles.listbox1,'string',edit_string);
    end

    该段代码是把编辑框中的字符加入到裂框中。 我们几种方法可验证该问题。

    比如  在 

    list_string = get(handles.listbox1,'string');   % list_string是一个元胞?是
    后面加上  class(list_string) 然后我们就可以在命令行看到结果为 cell


    然而,本文重点不在于次!我想说的是 函数 vertcat 和 函数 cat(1,...)

    这俩个函数在垂直方向拼接输入参数但是他们俩个函数都需要输入参数列相同

    例如

     a = ['123 ';'1234';'4  6']
    
    a =
    
    123 
    1234
    4  6
    
    >> b = '44'
    
    b =
    
    44
    
    >> cat(1,b,a)
    Error using cat
    Dimensions of matrices being concatenated are not consistent.
     
    >> vertcat(b,a)
    Error using vertcat
    Dimensions of matrices being concatenated are not consistent.

    当列相同的时候拼接是成功的

    c = '1470'
    
    
    c =
    
    
    1470
    
    
    >> cat(1,c,a)
    
    
    ans =
    
    
    1470
    123 
    1234
    4  6
    vertcat 结果也一样

    然而,开始的程序在执行的时候却没有错误,这就说明 列表框'string'返回的存储类型绝对不是普通高维数组。cat函数与vertcat函数对与元胞数组也是使用的。例如:

     a = {'1231';'sdfa'}
    
    a = 
    
        '1231'
        'sdfa'
    
    >> b = '1'
    
    b =
    
    1
    
    >> cat(1,b,a)
    
    ans = 
    
        '1'
        '1231'
        'sdfa'
    本人初学matlab,以上均是学习过程中遇到的问题,总结的心得!如果您发现有什么错误,还望指出来!谢谢!


    展开全文
  • 子窗口控件——列表框(List Box)

    千次阅读 2010-08-11 22:17:00
    默认的列表框给父窗口发送WM_COMMAND消息,所以几乎所有列表框都加LBS_NOTIFY,允许列表框发送WM_COMMAND,LBS_SORT可以让列表自动排序。LBS_MULTIPLESEL创建多选列表框。LBS_NOREDRAW会在添加列表后阻止列表更新,...
  • 列表框、组合框

    千次阅读 2010-04-08 15:54:00
    如果项目总数超过了列表框可显示的项目数,列表框会自动添加滚动条,可以方便用户以滚动的方式来选择列表框列表框的常用属性·listcount属性:用于返回列表框中的所有选项的个数,该属性只能在程序代码中调用和设置...
  • C# ListBox:列表框控件

    千次阅读 2019-06-11 22:26:10
    列表框中常用属性列表框还提供了一些方法来操作列表框中的选项,由于列表框中的选项是一个集合形式的, 列表项的操作都是用 Items 属性进行的。 例如Items.Add方法用于向列表框中添加项,...
  • VB 列表框的应用实例

    2011-05-11 15:49:58
    这个是关于列表框的应用例子,比较简单,涉及到列表框list、text、listindex属性、additem、removeitem、clear方法、例子比较简单,适合初学者。
  • VB中关于LIST列表框的使用

    千次阅读 2019-01-29 14:35:42
    ... 注意:在使用list列表的过程中,添加的列表数量...例如name名称list1列表框添加了了A,B,C三项,那么A项地址为list1.list(0),B项地址为list1.list(1),C项的地址为list1.list(2).列表的数量计数list1.listcount=3
  • 列表的样式在CSS中,列表元素是一个块列表中的每个表项也是一个块,只是在表项前面多了一个项目符号。列表的格式化,主要由浏览器完成,而不是由设计人员完成。设计人员只能通过 list-style属性来定义列表的...
  • mfc 列表框行颜色设置方法

    千次阅读 2019-09-11 14:04:15
    指定改变CListCtrl中某一行的颜色,比如说刚添加进去的一行,让它改变颜色,这样记录多了,容易看到自己刚刚加入的行,方便操作可查看,也可以让添加和...新建一个mfc 对话框工程,并添加列表框控件,添加一些数据...
  • C#中操作列表List属性和方法

    千次阅读 2018-04-22 15:27:01
    常用的属性和方法 Capacity属性 :获取容量大小 ...IndexOf()方法 :取得一个元素所在列表中的索引位置(从前往后搜索),没找到就返回-1。 LastIndexOf()方法 :从后往前搜索,搜索到满足条件的就停止,...
  • 导出列表框控件(List Control)的数据到EXCEL文件 上一篇 今天的目标: 1、收集数据到列表框控件 2、列表框控件的数据导出到EXCEL文件(.xls) 开始: 今天的代码文件Github的链接我也会放在博客的底部哟 偷个懒,我...
  • wx.ListBox创建列表框

    千次阅读 2013-04-23 10:26:27
    7.4.3 如何创建一个列表框列表框是提供给用户选择的另一机制。选项被放置在一个矩形的窗口中,用户可以选择一个或多个。列表框比单选按钮占据较少的空间,当选项的数目相对少的时候,列表框是一个好的选择。...
  • 给组合框或列表框添加元素一、RowSource属性添加元素二、为工作表中的ActiveX控件中的列表框添加元素三、使用list属性添加元素四、使用additem方法添加列表项五、列表框的其他属性 一、RowSource属性添加元素 ...
  • 下拉列表框实现

    万次阅读 2010-09-10 16:02:00
    如果我们要在列表中显示自己的数据,可以在构造dropDownList后对list属性赋值:  DropDownList* tf=[[DropDownListalloc]initWithFrame:  CGRectMake(144, 73, 140,30)];  tf.borderStyle=...
  • List对象列表属性值的快速搜索

    千次阅读 2017-03-12 19:29:14
    对于数据的搜索已有很多成熟的...比如有这样一个需求:已经加载了一个班的学生在一个List列表中,要根据学生和姓名和住址做一个模糊搜索。因为数据已经加载到List中,存在于内存中,若再从数据库或网络上去使用关键字
  • MFC列表框的初始化

    千次阅读 2013-12-09 10:10:49
    第二步:设置列表框属性,在样式中,选择“报告“----默认情况下是图标,这样是不会显示表格的,所以这里需要选择报告形式 第三步:创建列表框的成员变量, 这里需要注意的是:列表框的成员变量名一般...
  • vb列表框ListBox的详细使用方法

    万次阅读 2018-06-12 15:19:45
    列表框(ListBox)控件表示一个选项清单,用户可能用鼠标选择其中一个或者几个选项。 列表框的特点是:列表框中的项目是通过程序插入到其中的,用户无法向清单中输入数据,当选择其中的项
  • vb学习总结, 列表框  1、属性  1、columns  该属性用来确定列表的列数。当该属性设置为0(默认)是,所用的项目呈单列显示。...list属性保存了列表框中所有值得数组,可以通过下标访问数组中的值(下标值从
  • 常用控件:列表框控件ListBox

    千次阅读 2017-09-29 10:10:18
    列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中一次只能选择一个列表项,而多选列表框可以同时选择多个列表项。  列表框也会向父窗口发送通知消息。这些通知消息含义如下:  LBN_DBLCLK:用户...
  • MFC实例:[5] ListBox 列表框控件实例

    千次阅读 2019-04-01 17:39:52
    MFC实例:[4] ListBox 列表框控件实例
  • 列表框和组合框的使用

    千次阅读 2010-06-24 15:21:00
    列表框是显示一系列项供用户选择的控件,对选中的项可以进行后续的处理。用户选择可以是多项的,但本章的例程设计为单选的。组合框是一个编辑框带一个可以下拉的列表框,用户在下拉框中选择的项会进入编辑框中...
  • uniapp IndexedList索引列表添加搜索

    千次阅读 2020-12-10 17:26:00
    最近做uniapp项目时,用到了IndexedList索引列表这个组件,但是需要添加一个搜索功能,于是呢我就尝试着在组件上面自己改一下。下面我就简单介绍一下: 所需组件 其实也就是两个,首先是indexedLIst索引组件,其次...
  • HTML5新增list属性

    千次阅读 2018-05-20 20:22:10
    数据项绑定在一起,实现一个下拉提示,用户可以手动或从下拉列表中选择。Demo演示:当用户输入时就会进行自动匹配:代码:&lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta...
  • ListBox组件与ComboBox组件 列表框与组合框组件也被广泛的使用...一些列表框list boxes)是自绘(Owner-Draw)表框,在自绘列表框中,程序员负责从表框中画表项。 如果需要,可以自绘列表框,也许没有人意识到,
  • 在CSkinList基础上整理了代码 修改部分:check图标改为自绘 下拉框滑块部分由加载位图改为自绘 说明:可自由修改背景色、文...2、含check属性时 拖动滑块 自绘check图标界面有问题 未见刷新? 3、滑块宽高度自适应

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,107
精华内容 78,042
关键字:

列表框的list属性