精华内容
下载资源
问答
  • 本人刚开始使用蓝牙耳机连接还是挺管用的,也知道啥时候开始就不行了在“设置”的蓝牙一栏,删除设备后再重新连接还是不行,显示已连接,但蓝牙耳机实际根本没有连接上,网上也找到了很多的方法都没用,叫我更新...

    本人刚开始使用蓝牙耳机连接还是挺管用的,也不知道啥时候开始就不行了

    在“设置”的蓝牙一栏,删除设备后再重新连接还是不行,显示已连接,但蓝牙耳机实际根本没有连接上,网上也找到了很多的方法都没用,叫我更新驱动,到“设备管理器”弄等等全都试了下,就差卸载驱动重装了

    不过幸运的是还是解决了,而且简单的一批,就几个步骤:

    1.到“设置”-> '设备" -> "蓝牙和其他设备",把你之前连接的蓝牙耳机设备给删了

    7dcbfe8bdcba1cdfb510877f310ab2bc.png

    2.点击你电脑的右下角类似聊天框的图标:

    17a94e6f17d1aac9e51d082d23536ead.png

    3.点击后会显示一个框,点击“连接”选项,这时候把你的蓝牙耳机开起来,过一会儿应该就可以看到你蓝牙设备就显示出来了,点击连接就行了

    总结:我也不知道是啥原因,在设置那里删除设备在连接没啥用,在这里就有用了。如果上面你试了后还是没用,建议你下载“驱动精灵”,有可能是缺少驱动或驱动没有更新,驱动安装完毕后重启,再按上面的步骤就行了

    展开全文
  • chmod +x /etc/rc.d/rc.local #授权一下才会起作用 当然有的时候也可能成功,比如: /etc/rc.d/rc.local 文件中的内容格式正确: 开头少了#!/bin/bash,也是执行成功的,会提示你格式不对。 此外还可能是...

     

     

    Centos7已经写了要

    chmod +x /etc/rc.d/rc.local #授权一下才会起作用   

    当然有的时候也可能不成功,比如:
            /etc/rc.d/rc.local 文件中的内容格式不正确:
            开头少了#!/bin/bash,也是执行不成功的,会提示你格式不对。

    此外还可能是没有启动此项服务:
            systemctl list-units --type=service  #来查看一下所有的开启启动项目里面有没有这个rc-local这个服务。
            systemctl  status rc-local.service #来查看一下当前是怎么个状态

            然后:

            systemctl enable rc-local.service

            systemctl start rc-local.service
            #手工添加下开机启动或者手工起一下看报错信息。

            另外:服务的启动文件是存放在了:/lib/systemd/system/目录下面,如果不记得这个服务的全称可以来这个目录下面看。

    展开全文
  • 最近在使用搜狗浏览器的时候,发觉各种快捷键都能使用了。网上搜并能找到解决办法。因为搜狗经常用,快捷键...于是勾选此项,自动保存,然后按F5,刷新可用了。又按ctrl+F,搜索快捷也可用了。又试了几个常用的快捷
    最近在使用搜狗浏览器的时候,发觉各种快捷键都不能使用了。网上搜并不能找到解决办法。因为搜狗经常用,快捷键不能使用很不方便。今天刚好有点时间,于是点开搜狗的工具--选项,看能否找到快捷键不能使用的原因。当在搜狗选项设置页面点击到快捷键选项卡时,发觉最上面的启用快捷键复选框没勾选,难道是这里的原因?于是勾选此项,自动保存,然后按F5,刷新可用了。又按ctrl+F,搜索快捷也可用了。又试了几个常用的快捷键,都可以使用。看来是这里的问题。估计是因为在某个时候误操作,导致这个快捷键启用复选框勾选被去掉造成
    
    展开全文
  • 我做界面使用的是duilib,其自带的CListUI并能满足此项功能,需要进行扩展,在此记录,以便后续使用需要。   先看一下实现的效果:     今天我们的扩展主要包含如下部分: 1. 表头支持控件 在ListUI中...

    今天在做一个程序的界面时,需要在一个列表中显示除文字以外的其他控件,如:EditButtonCombo等;我做界面使用的是duilib,其自带的CListUI并不能满足此项功能,需要进行扩展,在此记录,以便后续使用需要。

     

    先看一下实现的效果:

     

     

    今天我们的扩展主要包含如下部分:

    1. 表头支持控件

    在ListUI中,表头是CListHeaderItemUI,而这个类是从CControlUI继承而来,为了能支持在其中显示其他控件,它需要是一个容器,那么需要将其父类改成CContainerUI,调整基类后,需要同时将CListHeaderItemUI类中引用 CControlUI的地方全部改成CContainerUI,如:

     

    1. LPVOID CListHeaderItemUI::GetInterface(LPCTSTR pstrName)  
    2. {  
    3.     if( _tcscmp(pstrName, DUI_CTR_LISTHEADERITEM) == 0 ) return this;  
    4.     return CContainerUI::GetInterface(pstrName);  
    5. }  
    LPVOID CListHeaderItemUI::GetInterface(LPCTSTR pstrName)
    {
        if( _tcscmp(pstrName, DUI_CTR_LISTHEADERITEM) == 0 ) return this;
        return CContainerUI::GetInterface(pstrName);
    }

    如果此处不改,将无法从XML文件中加载内嵌控件。

    还需要修改其他如DoEvent事件中的CControlUI,否则会导致表头无法拖拉,切记。

    改造后,我们可以从XML文件加载了,XML文件可以这样写:

    1. <List name="listex" bkcolor="#FFFFFFFF" inset="0,0,0,0" itemshowhtml="true" vscrollbar="true" hscrollbar="true" headerbkimage="file='list_header_bg.png'" itemhotimage="file='tree_hot.bmp' corner='2,1,2,1'" itemselectedimage="file='tree_select.bmp' corner='2,1,2,1'" itemalign="center" itembkcolor="#FFE2DDDF" itemaltbk="true" hscrollbar="false" menu="true">  
    2. <ListHeader height="24" menu="true">  
    3. <ListHeaderItem text="" inset="1,0,1,0" minwidth="60" endellipsis="true" font="1" width="95"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2">  
    4. <VerticalLayout inset="1,0,5,0">  
    5. <CheckBox name="selall" endellipsis="true"  text="全选" textcolor="#FF386382" hottextcolor="#FF386382" selectedtextcolor="#FF386382" disabledtextcolor="#FFbac0c5" textpadding="20,3,0,0" align="left" selectedimage="file='checkbox_p.png' dest='0,2,15,17'" normalimage="file='checkbox_h.png' dest='0,2,15,17'"  />  
    6. </VerticalLayout>  
    7. </ListHeaderItem>  
    8. <ListHeaderItem text="域名" minwidth="100" endellipsis="true" font="1" width="200"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2"/>  
    9. <ListHeaderItem text="描述" minwidth="120" endellipsis="true" font="1" width="150"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2"/>  
    10. </ListHeader>  
    <List name="listex" bkcolor="#FFFFFFFF" inset="0,0,0,0" itemshowhtml="true" vscrollbar="true" hscrollbar="true" headerbkimage="file='list_header_bg.png'" itemhotimage="file='tree_hot.bmp' corner='2,1,2,1'" itemselectedimage="file='tree_select.bmp' corner='2,1,2,1'" itemalign="center" itembkcolor="#FFE2DDDF" itemaltbk="true" hscrollbar="false" menu="true">
    <ListHeader height="24" menu="true">
    <ListHeaderItem text="" inset="1,0,1,0" minwidth="60" endellipsis="true" font="1" width="95"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2">
    <VerticalLayout inset="1,0,5,0">
    <CheckBox name="selall" endellipsis="true"  text="全选" textcolor="#FF386382" hottextcolor="#FF386382" selectedtextcolor="#FF386382" disabledtextcolor="#FFbac0c5" textpadding="20,3,0,0" align="left" selectedimage="file='checkbox_p.png' dest='0,2,15,17'" normalimage="file='checkbox_h.png' dest='0,2,15,17'"  />
    </VerticalLayout>
    </ListHeaderItem>
    <ListHeaderItem text="域名" minwidth="100" endellipsis="true" font="1" width="200"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2"/>
    <ListHeaderItem text="描述" minwidth="120" endellipsis="true" font="1" width="150"  normalimage="headerctrl_normal.bmp" hotimage="headerctrl_hot.bmp" pushedimage="headerctrl_down.bmp" sepimage="Headerctrl_Sperator.bmp" sepwidth="2"/>
    </ListHeader>


    这样显示出来的效果如下:

     

    注意:

    此处需要将内嵌控件的ListHeaderItem 添加一个inset属性,控制内嵌的控件不要铺满整个ListHeaderItem ,否则表头拖动不了,如:

    ListHeaderItem text="" inset="1,0,1,0"

     

    2. 列表项支持控件

    CListUI的某一行CListContainerElementUI继承至容器CContainerUI,这样一来我们只需要将需要的控件添加到此容器中,即可正确的显示相关的控件了,此处并不需要做调整,只是这样一来会带来一个问题,那就是所添加的列的宽度无法与表头的宽度保持一致。

    要解决这个问题,需要给CListContainerElementUI添加SetPos函数,在此函数中,重新校正数据列宽与表头宽度一致,具体如下:

    1. void SetPos(RECT rc)  
    2. {  
    3. CContainerUI::SetPos(rc);  
    4. if( m_pOwner == NULL ) return;  
    5. if (m_pHeader == NULL)  
    6. {  
    7. return;  
    8. }  
    9. TListInfoUI* pInfo = m_pOwner->GetListInfo();  
    10. int nCount = m_items.GetSize();  
    11. for (int i = 0; i < nCount; i++)  
    12. {  
    13. CControlUI *pHorizontalLayout = static_cast<CControlUI*>(m_items[i]);  
    14. // if (pHorizontalLayout != NULL)   
    15. // {   
    16. // RECT rtHeader = pHeaderItem->GetPos();   
    17. // RECT rt = pHorizontalLayout->GetPos();   
    18. // rt.left = pInfo->rcColumn[i].left;   
    19. // rt.right = pInfo->rcColumn[i].right;   
    20. // pHorizontalLayout->SetPos(rt);   
    21. // }   
    22.    
    23. CListHeaderItemUI *pHeaderItem = static_cast<CListHeaderItemUI*>(m_pHeader->GetItemAt(i));  
    24. if (pHorizontalLayout != NULL && pHeaderItem != NULL)  
    25. {  
    26. RECT rtHeader = pHeaderItem->GetPos();  
    27. RECT rt = pHorizontalLayout->GetPos();  
    28. rt.left = rtHeader.left;  
    29. rt.right = rtHeader.right;  
    30. pHorizontalLayout->SetPos(rt);  
    31. }  
    32. }  
    33.     }  
    34. CListHeaderUI *m_pHeader;  
    void SetPos(RECT rc)
    {
    CContainerUI::SetPos(rc);
    if( m_pOwner == NULL ) return;
    if (m_pHeader == NULL)
    {
    return;
    }
    TListInfoUI* pInfo = m_pOwner->GetListInfo();
    int nCount = m_items.GetSize();
    for (int i = 0; i < nCount; i++)
    {
    CControlUI *pHorizontalLayout = static_cast<CControlUI*>(m_items[i]);
    // if (pHorizontalLayout != NULL)
    // {
    // RECT rtHeader = pHeaderItem->GetPos();
    // RECT rt = pHorizontalLayout->GetPos();
    // rt.left = pInfo->rcColumn[i].left;
    // rt.right = pInfo->rcColumn[i].right;
    // pHorizontalLayout->SetPos(rt);
    // }
     
    CListHeaderItemUI *pHeaderItem = static_cast<CListHeaderItemUI*>(m_pHeader->GetItemAt(i));
    if (pHorizontalLayout != NULL && pHeaderItem != NULL)
    {
    RECT rtHeader = pHeaderItem->GetPos();
    RECT rt = pHorizontalLayout->GetPos();
    rt.left = rtHeader.left;
    rt.right = rtHeader.right;
    pHorizontalLayout->SetPos(rt);
    }
    }
     	}
    CListHeaderUI *m_pHeader;

    此处往列表项中添加了表头的指针,需要在插入一行的时候,将表头的指针传递进来,用于在SetPos的时候获取表头宽度。

    注意以上代码中的注释部分,原本打算从TListInfoUI的rcColumn中获取表头项宽度的,但发现新添加行时,rcCulumn中的值全是0,需要在插入行前主动调用一次CListUI::SetPos(GetPos());才能正常,使用起来较麻烦,且容易忘记;即使是添加上了,测试发现获取到的位置有一定的偏移,所以采用将Header传入,实时获取了。

    以下是一行数据的XML文件描述:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <Window>  
    3.   <ListContainerElement >  
    4. <CheckBox name="selectme" endellipsis="true"  text="亲,选我吧!" textcolor="#FF386382" hottextcolor="#FF386382" selectedtextcolor="#FF386382" disabledtextcolor="#FFbac0c5" textpadding="20,3,0,0" align="left" selectedimage="file='checkbox_p.png' dest='0,2,15,17'" normalimage="file='checkbox_h.png' dest='0,2,15,17'"  />  
    5. <HorizontalLayout inset="4,4,4,4">  
    6. <Edit text="测试文本" bordersize="1" height="20" bordercolor="#FF4775CC" name="domain" ></Edit>  
    7. </HorizontalLayout>  
    8. <HorizontalLayout >  
    9. <VerticalLayout>  
    10. <Button text="按钮1" width="50" pushedimage="button_down.bmp" hotimage="button_over.bmp" normalimage="button_nor.bmp" name="ttt" ></Button>  
    11. <Button text="按钮2" width="50" pushedimage="button_down.bmp" hotimage="button_over.bmp" normalimage="button_nor.bmp" name="ttt" ></Button>  
    12. <Label text="这是从XML文件中加载的列表项"></Label>  
    13. </VerticalLayout>  
    14. </HorizontalLayout>  
    15.   </ListContainerElement>  
    16. </Window>  
    <?xml version="1.0" encoding="UTF-8"?>
    <Window>
      <ListContainerElement >
    <CheckBox name="selectme" endellipsis="true"  text="亲,选我吧!" textcolor="#FF386382" hottextcolor="#FF386382" selectedtextcolor="#FF386382" disabledtextcolor="#FFbac0c5" textpadding="20,3,0,0" align="left" selectedimage="file='checkbox_p.png' dest='0,2,15,17'" normalimage="file='checkbox_h.png' dest='0,2,15,17'"  />
    <HorizontalLayout inset="4,4,4,4">
    <Edit text="测试文本" bordersize="1" height="20" bordercolor="#FF4775CC" name="domain" ></Edit>
    </HorizontalLayout>
    <HorizontalLayout >
    <VerticalLayout>
    <Button text="按钮1" width="50" pushedimage="button_down.bmp" hotimage="button_over.bmp" normalimage="button_nor.bmp" name="ttt" ></Button>
    <Button text="按钮2" width="50" pushedimage="button_down.bmp" hotimage="button_over.bmp" normalimage="button_nor.bmp" name="ttt" ></Button>
    <Label text="这是从XML文件中加载的列表项"></Label>
    </VerticalLayout>
    </HorizontalLayout>
      </ListContainerElement>
    </Window>
    注意,此处需要确保ListContainerElement 的子控件个数不少于列表的列数

     在代码中加载此XML文件,将行数据添加到列表中:

    1. CListUIEx *pList = static_cast<CListUIEx*>(m_PaintManager.FindControl(_T("listex")));  
    2. CDialogBuilder builder;  
    3. CListContainerElementUI* pLine = (CListContainerElementUI*)(builder.Create(_T("sigle_list_item_column.xml"),(UINT)0, this));  
    4. if( pLine != NULL )   
    5. {  
    6. pList->InsertItem(0, 60, pLine); //此函数是经过二次封装的   
    7. }  
    CListUIEx *pList = static_cast<CListUIEx*>(m_PaintManager.FindControl(_T("listex")));
    CDialogBuilder builder;
    CListContainerElementUI* pLine = (CListContainerElementUI*)(builder.Create(_T("sigle_list_item_column.xml"),(UINT)0, this));
    if( pLine != NULL ) 
    {
    pList->InsertItem(0, 60, pLine); //此函数是经过二次封装的
    }
     加载的效果如下:

     

    这样我们可以在列表的不同项中显示任意内容,甚至是一个完整的窗口了。

     

    3. 通过代码动态添加列及列表项

     

    以上的处理均是调整后从XML加载相应的加载已经配置好的列表进行显示,在完成上述工作后,我这边进一步封装了几个函数,以便于动态的添加列[指定内嵌控件]、动态的插入行以及动态的在某一行列中添加控件。

     1). 以下代码用于动态的添加列:

    1. BOOL CListUIEx::InsertColumn(  
    2.  int nCol,  
    3.  CListHeaderItemUI *pHeaderItem  
    4.  )  
    5. {  
    6. CListHeaderUI *pHeader = CListUI::GetHeader();  
    7. if (pHeader == NULL)  
    8. {  
    9. return FALSE;  
    10. }  
    11. if (pHeader->AddAt(pHeaderItem, nCol))  
    12. {  
    13. return TRUE;  
    14. }  
    15.    
    16. delete pHeaderItem;  
    17. pHeaderItem = NULL;  
    18. return FALSE;  
    19. }  
    20.    
    21. BOOL CListUIEx::SetHeaderItemData(int nColumn, CControlUI* pControl)  
    22. {  
    23. CListHeaderUI *pHeader = CListUI::GetHeader();  
    24. if (pHeader == NULL)  
    25. {  
    26. return FALSE;  
    27. }  
    28. CListHeaderItemUI *pHeaderItem = (CListHeaderItemUI *)pHeader->GetItemAt(nColumn);  
    29. pHeaderItem->Add(pControl);  
    30. }  
    BOOL CListUIEx::InsertColumn(
     int nCol,
     CListHeaderItemUI *pHeaderItem
     )
    {
    CListHeaderUI *pHeader = CListUI::GetHeader();
    if (pHeader == NULL)
    {
    return FALSE;
    }
    if (pHeader->AddAt(pHeaderItem, nCol))
    {
    return TRUE;
    }
     
    delete pHeaderItem;
    pHeaderItem = NULL;
    return FALSE;
    }
     
    BOOL CListUIEx::SetHeaderItemData(int nColumn, CControlUI* pControl)
    {
    CListHeaderUI *pHeader = CListUI::GetHeader();
    if (pHeader == NULL)
    {
    return FALSE;
    }
    CListHeaderItemUI *pHeaderItem = (CListHeaderItemUI *)pHeader->GetItemAt(nColumn);
    pHeaderItem->Add(pControl);
    }
    调用代码如下[添加一列,并且向此列中嵌入一个CheckBox]

    1. CListHeaderItemUI *pHeaderItem = new CListHeaderItemUI;  
    2. pHeaderItem->SetTextStyle(DT_RIGHT|DT_VCENTER|DT_SINGLELINE);  
    3. pHeaderItem->SetText("新增列  ");  
    4. pHeaderItem->SetAttribute(_T("sepimage"), _T("Headerctrl_Sperator.bmp"));  
    5. pHeaderItem->SetAttribute(_T("sepwidth"), _T("1"));  
    6. pHeaderItem->SetAttribute(_T("pushedimage"), _T("headerctrl_down.bmp"));  
    7. pHeaderItem->SetAttribute(_T("hotimage"), _T("headerctrl_hot.bmp"));  
    8. pHeaderItem->SetAttribute(_T("normalimage"), _T("headerctrl_normal.bmp"));  
    9. pHeaderItem->SetFixedWidth(150);  
    10. pList->InsertColumn(3, pHeaderItem);  
    11.    
    12. CCheckBoxUI *pBtnUI = new CCheckBoxUI;  
    13. pBtnUI->SetText("选择");  
    14. pBtnUI->SetAttribute(_T("selectedimage"), _T("file='checkbox_p.png' dest='0,2,15,17'"));  
    15. pBtnUI->SetAttribute(_T("normalimage"), _T("file='checkbox_h.png' dest='0,2,15,17'"));  
    16. pBtnUI->SetAttribute(_T("textpadding"), _T("20,3,0,0"));  
    17. pBtnUI->SetAttribute(_T("align"), _T("right"));  
    18. pBtnUI->SetFloat(true);  
    19. pBtnUI->SetAttribute("pos""20,3, 65, 20");  
    20.    
    21. pList->SetHeaderItemData(3, pBtnUI);  
    CListHeaderItemUI *pHeaderItem = new CListHeaderItemUI;
    pHeaderItem->SetTextStyle(DT_RIGHT|DT_VCENTER|DT_SINGLELINE);
    pHeaderItem->SetText("新增列  ");
    pHeaderItem->SetAttribute(_T("sepimage"), _T("Headerctrl_Sperator.bmp"));
    pHeaderItem->SetAttribute(_T("sepwidth"), _T("1"));
    pHeaderItem->SetAttribute(_T("pushedimage"), _T("headerctrl_down.bmp"));
    pHeaderItem->SetAttribute(_T("hotimage"), _T("headerctrl_hot.bmp"));
    pHeaderItem->SetAttribute(_T("normalimage"), _T("headerctrl_normal.bmp"));
    pHeaderItem->SetFixedWidth(150);
    pList->InsertColumn(3, pHeaderItem);
     
    CCheckBoxUI *pBtnUI = new CCheckBoxUI;
    pBtnUI->SetText("选择");
    pBtnUI->SetAttribute(_T("selectedimage"), _T("file='checkbox_p.png' dest='0,2,15,17'"));
    pBtnUI->SetAttribute(_T("normalimage"), _T("file='checkbox_h.png' dest='0,2,15,17'"));
    pBtnUI->SetAttribute(_T("textpadding"), _T("20,3,0,0"));
    pBtnUI->SetAttribute(_T("align"), _T("right"));
    pBtnUI->SetFloat(true);
    pBtnUI->SetAttribute("pos", "20,3, 65, 20");
     
    pList->SetHeaderItemData(3, pBtnUI);
    2). 以下代码用于动态的添加行,动态的指定一列的内容: 

    1. int CListUIEx::InsertItem(int nItem, int nHeight)  
    2. {  
    3. CListContainerElementUIEx *pListItem = new CListContainerElementUIEx;  
    4. pListItem->SetFixedHeight(nHeight);/*固定一个行高*/  
    5. pListItem->SetList(this);  
    6.    
    7. CListHeaderUI *pHeader = CListUI::GetHeader();  
    8. if (NULL != pHeader)  
    9. {  
    10. int nHeaderCount = pHeader->GetCount();  
    11. for (int i = 0; i < nHeaderCount; i++)  
    12. {  
    13. pListItem->InsertColumn(i);  
    14. }  
    15. }  
    16. if ( !CListUI::AddAt(pListItem, nItem) )  
    17. {  
    18. delete pListItem;  
    19. pListItem = NULL;  
    20. return -1;  
    21. }  
    22. return nItem;  
    23. }  
    24.    
    25. void CListUIEx::SetItemData(int nItem,  
    26. int nColumn,  
    27. LPCTSTR Text, LPCTSTR Name)  
    28. {  
    29. //存放文本   
    30. CHorizontalLayoutUI *pSubHor = GetListSubItem(nItem, nColumn);  
    31. CLabelUI *pLabel = new CLabelUI;  
    32. pLabel->SetText(Text);//控件属性就根据需求设置吧,我简单设置一下   
    33. pLabel->SetTextStyle(DT_CENTER);  
    34. pLabel->SetAttribute("endellipsis""true");  
    35. pSubHor->SetAttribute("inset""3,1,3,1");  
    36. pLabel->SetName(Name);  
    37. pSubHor->Add(pLabel);//添加到父控件   
    38. }  
    39.    
    40. void CListUIEx::SetItemData(int nItem, int nColumn,CControlUI* pControl)  
    41. {  
    42. CHorizontalLayoutUI *pSubHor = GetListSubItem(nItem, nColumn);  
    43. pSubHor->SetAttribute("inset""3,0,3,1");  
    44. pSubHor->Add(pControl);//添加到父控件   
    45. }  
    int CListUIEx::InsertItem(int nItem, int nHeight)
    {
    CListContainerElementUIEx *pListItem = new CListContainerElementUIEx;
    pListItem->SetFixedHeight(nHeight);/*固定一个行高*/
    pListItem->SetList(this);
     
    CListHeaderUI *pHeader = CListUI::GetHeader();
    if (NULL != pHeader)
    {
    int nHeaderCount = pHeader->GetCount();
    for (int i = 0; i < nHeaderCount; i++)
    {
    pListItem->InsertColumn(i);
    }
    }
    if ( !CListUI::AddAt(pListItem, nItem) )
    {
    delete pListItem;
    pListItem = NULL;
    return -1;
    }
    return nItem;
    }
     
    void CListUIEx::SetItemData(int nItem,
    int nColumn,
    LPCTSTR Text, LPCTSTR Name)
    {
    //存放文本
    CHorizontalLayoutUI *pSubHor = GetListSubItem(nItem, nColumn);
    CLabelUI *pLabel = new CLabelUI;
    pLabel->SetText(Text);//控件属性就根据需求设置吧,我简单设置一下
    pLabel->SetTextStyle(DT_CENTER);
    pLabel->SetAttribute("endellipsis", "true");
    pSubHor->SetAttribute("inset", "3,1,3,1");
    pLabel->SetName(Name);
    pSubHor->Add(pLabel);//添加到父控件
    }
     
    void CListUIEx::SetItemData(int nItem, int nColumn,CControlUI* pControl)
    {
    CHorizontalLayoutUI *pSubHor = GetListSubItem(nItem, nColumn);
    pSubHor->SetAttribute("inset", "3,0,3,1");
    pSubHor->Add(pControl);//添加到父控件
    }

    通过如下代码来添加一行数据:

    1. CListUIEx *pList = static_cast<CListUIEx*>(m_PaintManager.FindControl(_T("listex")));  
    2. int nIndex = pList->GetCount();  
    3. pList->InsertItem(nIndex);  
    4.    
    5. CEditUI *pControl = new CEditUI;   
    6. pControl->SetText("");  
    7. pControl->SetName("edit");  
    8. pControl->SetBorderColor(RGB(255, 0, 0));  
    9. pControl->SetAttribute("bordersize""1");  
    10. pControl->SetAttribute("bordercolor""#FF4775CC");  
    11. pList->SetItemData(nIndex, 0, pControl);  
    12.    
    13. CButtonUI *pBtnUI = new CButtonUI;  
    14. pBtnUI->SetText("添加");  
    15. pBtnUI->SetFixedWidth(60);  
    16. pBtnUI->SetAttribute(_T("pushedimage"), _T("button_down.bmp"));  
    17. pBtnUI->SetAttribute(_T("hotimage"), _T("button_over.bmp"));  
    18. pBtnUI->SetAttribute(_T("normalimage"), _T("button_nor.bmp"));  
    19. pList->SetItemData(nIndex, 1, pBtnUI);  
    20.    
    21. pList->SetItemData(nIndex, 2, "这是一行动态添加的数据""testid");  
    22. if (pList->GetHeader()->GetCount() > 3)  
    23. {  
    24. pList->SetItemData(nIndex, 3, "新增列数据""testid1");  
    25. }  
    CListUIEx *pList = static_cast<CListUIEx*>(m_PaintManager.FindControl(_T("listex")));
    int nIndex = pList->GetCount();
    pList->InsertItem(nIndex);
     
    CEditUI *pControl = new CEditUI; 
    pControl->SetText("");
    pControl->SetName("edit");
    pControl->SetBorderColor(RGB(255, 0, 0));
    pControl->SetAttribute("bordersize", "1");
    pControl->SetAttribute("bordercolor", "#FF4775CC");
    pList->SetItemData(nIndex, 0, pControl);
     
    CButtonUI *pBtnUI = new CButtonUI;
    pBtnUI->SetText("添加");
    pBtnUI->SetFixedWidth(60);
    pBtnUI->SetAttribute(_T("pushedimage"), _T("button_down.bmp"));
    pBtnUI->SetAttribute(_T("hotimage"), _T("button_over.bmp"));
    pBtnUI->SetAttribute(_T("normalimage"), _T("button_nor.bmp"));
    pList->SetItemData(nIndex, 1, pBtnUI);
     
    pList->SetItemData(nIndex, 2, "这是一行动态添加的数据", "testid");
    if (pList->GetHeader()->GetCount() > 3)
    {
    pList->SetItemData(nIndex, 3, "新增列数据", "testid1");
    }

    至此,ListUI的扩展就告一段落了,目前已经完全满足了的使用需求,相信也能满足绝大部分其他人的需求了,测试程序的完整效果图如下:

     

     

    测试程序代码下载地址:http://download.csdn.net/detail/tragicguy/7087559

      

    后记:

    扩展此控件,参考了文章:http://blog.csdn.net/xdrt81y/article/details/17588961

     此份测试代码改自 群友 【朗】 的 ListExtension.

     同时特别感谢群友 tojen 的帮助!

    duilib功能确实很强大,给我这种UI小白带来了希望,希望有越来越多的高级控件能纳入的基础源码库中,方便大众;也希望其他扩展过duilib功能的大侠,放出代码来,造福众人。

    展开全文
  • 定时重关机2.06

    2010-06-07 15:14:23
    取消定时:本程序定时功能将不起作用! 每天定时:选取此项,“定时”栏目第一项将启用,你可以设置每天定时启动计算机的时间。如:8:00:00 每周定时:星期日到星期六,可以在每周固定的日期时间启动计算机 ...
  • 自动搜索这块的代码在电脑上都好用,在苹果手机上,输入英文会自动搜索,但是汉子就不起作用了,看了网上的方式,也不好用,大家帮忙看看。onkeyup这里要怎么修改,才能在苹果手机的浏览器里一样可以汉字输入触发...
  • 之前的课程(本地文件替换服务器文件) 中有讲到在AutoResponder中需要勾选两个选项,如下图所示: 但是这些选项的作用分别是什么,就没有仔细的深究了...也就是说,不勾选此项,AutoResponder是不起作用的。 Unmat...
  • 如果你碰到的上述问题(本地调试ok,小程序上传体验版 各种莫名其妙的问题-卡死-组件属性失效-$apply()不起作用) 您需要关闭 微信开发者工具中: 1、微信开发者工具-->项目-->关闭ES6转ES5。 重要:漏掉...
  • 使用geo或geo3d时想自定义显示lable时 formatter:funtion(data){} 发现不起作用(此项问题已经在最新版本中解决) 解决方案:修改源码 http://www.echartsjs.com/option.html#geo.regions.label.formatter由官方文档中...
  • 长链非编码RNA在基因的表达调控中,着重要的作用。精确的RNA和蛋白质互作模型来研究RNA和蛋白质之间的相互作用以及相分离模式是必可少的。而目前的大多数将此项研究聚焦在核体Paraspeckle上。这种无膜细胞器是在...
  • 或者是,如果输出缓冲区不起作用,返回零。 php.ini中配置缓冲 在php的配置文件php.ini中有以下这项配置 output_buffering ,php.ini默认设置了output_buffering = 4096,php已经设置了一个缓冲区。 如果php.ini 中...
  •  6、修复个人信息中关于同意接收论坛通知,此项应该只对后台的论坛通知起作用。 7、修复附件下载权限判断有误的问题 8、修复自定义栏目内容最大长度限制默认为50 9、修复自定义栏目中描述没有起作用的问题。 10...
  • Android 7.0 settings中添加新菜单

    万次阅读 热门讨论 2017-03-01 17:46:19
    需求:在设置中,添加一级菜单项,在设备中加入“按键交换”,此项菜单与“显示” AndroidManifest.xml中配置如下,HarKey.java是一个Activity... android:priority="9"加这个属性知道是什么作用,知道的可以留言
  • 为满足不同公文类型的格式需求,可同时设置3种页边距,分别为普通公文、信函格式、其他格式(如便笺等),页边距数值以厘米为单位,可精确到小数(word软件精度一般为0.01厘米,小数位数再多也不起作用)。...
  • 但DLL劫持技术在后渗透和域渗透中的权限提升和权限维持都到了至关重要的作用。本文简单剖析DLL劫持技术并通过实例应用来查看如何在渗透工作中利用此项技术。篇幅稍长,各位读者耐心观看,文中有不妥之处请各位加以...
  • 它将起作用,但是我得到的十分之三的声音足够好,需要更换天线。 这就需要打开手表,如果仔细地做的话,它几乎会留下任何可见的痕迹。 一些型号为TON5的手表误用了晶体,这使它们目前与daFlasher兼容。 它们...
  • 作为远程会诊支持平台的天翼云,在此次疫情防控工作中到了非常重要的作用。过去病人遇到特殊病情会选择转院或者邀请医疗专家前来会诊,现在在天翼云的帮助下,医疗专家可以对病人进行远程会诊,大大提升了确诊效率...
  • DBgrid网格特效

    2010-03-29 13:10:00
    DBgrid网格特效2008年8月4日 11:25 作者:详 来源:中国烟机备件网 Delphi中的数据网格控件(TDbGrid)对于显示和编辑数据库中大量的数据着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中...
  • 3、在配置里新增邮件提醒,此项功能在批量检查服务器是否在线打开的时候起作用。4、FastMM优化内存。 2.3版本更新1、新增磁盘打印机映射,端口,智能卡映射,其中磁盘映射可以把本地硬盘内容复制到 远程服务器,而远程...
  • 一般简历的第一轮过眼时间约为5-10秒钟,基本上按照招聘广告的要求设定好几个条件进行过滤,负责此项流程的多为招聘助理,51job的“网才”在这个环节也到了非常重要的作用;简历的第二轮过眼时间约为30-60秒钟,...
  • 一般简历的第一轮过眼时间约为5-10秒钟,基本上按照招聘广告的要求设定好几个条件进行过滤,负责此项流程的多为招聘助理,51job的“网才”在这个环节也到了非常重要的作用;简历的第二轮过眼时间约为30-60秒钟,...
  • 抓包工具WSock Expert

    2009-11-18 10:17:36
    4、创建好筛选条件后,您需要按下"Set Filter"按钮进行设置应用,否则这些筛选条件不会起作用。 5、在筛选列表上的右键菜单中您可以保存/装载筛选条件。 6、通过"Change Packet View"按钮您可以切换数据包的显示...
  • 4、修正居左调用不起作用的bug,同时增加让图片居中功能 1.0版居右能够正常调用,居左无法调用,这个bug已经在1.3版中修复。同时,在1.3版中,增加了对图片居中功能的调用。也就是在原来写right或者left的地方,改...
  • 3、在配置里新增邮件提醒,此项功能在批量检查服务器是否在线打开的时候起作用。 4、FastMM优化内存。  2.3版本更新 1、新增磁盘打印机映射,端口,智能卡映射,其中磁盘映射可以把本地硬盘...
  •  1003 无法完成此项功能。  1004 标志无效。  1005 卷包含已识别的文件系统。请确认所有需要的文件系统驱动程序都已经加载,而且卷没有任何损坏。  1006 某文件的卷已在外部改变,因而打开的文件不再...
  • 4、创建好筛选条件后,您需要按下"Set Filter"按钮进行设置应用,否则这些筛选条件不会起作用。 5、在筛选列表上的右键菜单中您可以保存/装载筛选条件。 6、通过"Change Packet View"按钮您可以切换数据包的显示...
  • 4、创建好筛选条件后,您需要按下"Set Filter"按钮进行设置应用,否则这些筛选条件不会起作用。 5、在筛选列表上的右键菜单中您可以保存/装载筛选条件。 6、通过"Change Packet View"按钮您可以切换数据包的显示...
  • 17 修复会员权限管理中发布招聘的权限不起作用的问题 18 修复文章大类下有文章,仍能删除文章大类的问题 19 修复手机版 供求 竞价的信息没有前面的图片的问题 20 改进手机版 商家 按照好评排序无效的问题 21 改进全站...
  • ”开头的数行任意字符组成,在MSDOS.SYS中属于注释行,对系统不起任何设置作用,主要用于保证MSDOS.SYS文件长度大于1024字节。  MSDOS.SYS提供的参数多数是用于调整系统使用的,对于普通用户来说,常用的主要包括...
  • 4、创建好筛选条件后,您需要按下"Set Filter"按钮进行设置应用,否则这些筛选条件不会起作用。 5、在筛选列表上的右键菜单中您可以保存/装载筛选条件。 6、通过"Change Packet View"按钮您可以切换数据包的显示...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

此项不起作用