bl2019 发表于 2019-8-22 16:29:46

emwin的listwheel怎么在设置画选中框

怎么在listwheel中画一个类似图2 的矩形框,我用
//GUI_SetColor(GUI_RED);
//GUI_DrawRect(9, 20, 160, 40);
画了一下,应该图层不对,画出来的矩形框在listwheel的下面,怎么才能滑到上面来了,GUI_DrawRect又不能设置图层句柄参数。不知道该怎么弄:dizzy:




tanic 发表于 2019-8-23 09:23:56

可以用listview,自带选中行特效   
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
                LISTVIEW_SetGridVis(hItem, 1);
                LISTVIEW_SetHeaderHeight(hItem, 20);
                LISTVIEW_SetRowHeight(hItem,20);
                LISTVIEW_SetGridVis(hItem,0);

                LISTVIEW_AddColumn(hItem, 100, "地址", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 150, "检测类型", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 90, "状态", GUI_TA_HCENTER | GUI_TA_VCENTER);   
                LISTVIEW_AddColumn(hItem, 90, "示值", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 190, "描述", GUI_TA_HCENTER | GUI_TA_VCENTER);
                for(i=0;i<14;i++)
                {
                        LISTVIEW_AddRow(hItem, NULL);
                }
                LISTVIEW_SetSel(hItem,0);

bl2019 发表于 2019-8-23 10:11:17

tanic 发表于 2019-8-23 09:23
可以用listview,自带选中行特效   
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
                LISTVIEW ...
谢谢!我用的是listwheel不是listview。年月日时分秒不是固定值要能够任意搭配,用listview就要一个个写出来,工作量太大:dizzy:

tanic 发表于 2019-8-23 10:33:09

试试这个   LISTWHEEL_SetSel应该是选中额 LISTWHEEL_SetSel 这个能自动根据数据更新现实么。我之前不知道。
用的view+定时器自己刷新的。。。。

bl2019 发表于 2019-8-23 14:28:54

tanic 发表于 2019-8-23 10:33
试试这个   LISTWHEEL_SetSel应该是选中额 LISTWHEEL_SetSel 这个能自动根据数据更新现实么。我之前不知 ...
   LISTWHEEL_SetFont(listwheel, GUI_FONT_16B_ASCII);    LISTWHEEL_SetSel(listwheel, 2);//设置第二行为选中行
    LISTWHEEL_SetTextAlign(listwheel, GUI_TA_HCENTER | GUI_TA_VCENTER);//水平垂直居中
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_UNSEL, GUI_LIGHTGRAY);//未选中背景色
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_SEL, GUI_LIGHTRED);//选中背景色

这个是设置有多行的时候,以哪一行为选中行,我已经用了,具体效果如图1,但是在用户选择滑动的时候,是不能选中的,如图2

bl2019 发表于 2019-8-23 17:01:34

好了,终于可以结贴了,经过一天的无所不用其极,突然发现 API 上有,直接照着画就行:dizzy:

//画选中线框
static int _OwnerDraw(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
    switch (pDrawItemInfo->Cmd) {
      case WIDGET_DRAW_OVERLAY:
            GUI_SetColor(GUI_RED);
            GUI_DrawHLine(32, 0, 52);
            GUI_DrawHLine(48, 0, 52);
            break;
      default:
            return LISTWHEEL_OwnerDraw(pDrawItemInfo);
    }
    return 0;
}


LISTWHEEL_SetFont(listwheel, GUI_FONT_16B_ASCII);
    LISTWHEEL_SetSel(listwheel, 2);//设置第二行为选中行
    LISTWHEEL_SetTextAlign(listwheel, GUI_TA_HCENTER | GUI_TA_VCENTER);//水平垂直居中
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_UNSEL, GUI_LIGHTGRAY);//未选中背景色
    LISTWHEEL_SetBkColor(listwheel, LISTWHEEL_CI_SEL, GUI_LIGHTRED);//选中背景色
    LISTWHEEL_SetOwnerDraw(listwheel, _OwnerDraw);//画选中框

:dizzy::dizzy::dizzy::
@tanic 谢谢!

tanic 发表于 2019-8-24 09:25:09

bl2019 发表于 2019-8-23 17:01
好了,终于可以结贴了,经过一天的无所不用其极,突然发现 API 上有,直接照着画就行

//画选中线框 ...

哈哈,其实很多很多功能都有API只不过文档不好,不知道罢了,每个API都试试:lol

tanic 发表于 2019-8-24 09:37:09

我之前做的是矩阵键盘操作,没有触摸的那种UI;P

bl2019 发表于 2019-8-24 14:51:34

tanic 发表于 2019-8-24 09:37
我之前做的是矩阵键盘操作,没有触摸的那种UI

做出来之后给我说我们的屏幕不支持滑动:dizzy:

tanic 发表于 2019-8-24 16:27:57

bl2019 发表于 2019-8-24 14:51
做出来之后给我说我们的屏幕不支持滑动

加个触摸就行了。。。
页: [1]
查看完整版本: emwin的listwheel怎么在设置画选中框