硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2792|回复: 12
收起左侧

[emWin] 向ListView单元格写入数据

[复制链接]

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
发表于 2017-7-7 11:00:26 | 显示全部楼层 |阅读模式
点击单元格,唤出了键盘,接下来该怎么办,输入不进去呀。
大虾吃小虾米
回复

使用道具 举报

17

主题

42

回帖

17

积分

初级会员

积分
17
发表于 2017-7-7 11:14:15 | 显示全部楼层
键盘输入完后就在回调函数中更新LISTVIEW的值:LISTVIEW_SetItemText();
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-7 11:42:24 | 显示全部楼层
有没有例子可以分享下吗,这些函数不太会用
大虾吃小虾米
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-7-8 00:56:27 | 显示全部楼层

回 出其不意 的帖子

出其不意:有没有例子可以分享下吗,这些函数不太会用 (2017-07-07 11:42)
你先简单实现下,可帮你修改代码。针对listview进行编辑的还真没现成的例子。
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
发表于 2017-7-8 10:39:57 | 显示全部楼层
精美、便捷的emWin界面设计-GLCD
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-10 10:05:45 | 显示全部楼层
周一归来 ,直接上代码。

#include <string.h>
#include <stdlib.h>
#include "DIALOG.h"
#include "LISTVIEW.h"
#include "GUI.h"
#include "./Bsp/led/bsp_led.h"   

/*********************************************************************
*       Types
**********************************************************************/

extern WM_HWIN hPage[6];
extern WM_HWIN hNumPad;

typedef struct {
  char  *pText;
  int    Width;
  int    Align;
  int    (*fpCompare)(const void *p0, const void *p1);
} COL_PROP;


static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "", 0,     0,  0, 800, 480 },
  { LISTVIEW_CreateIndirect, NULL,                GUI_ID_LISTVIEW0,  50,  50, 500, 250 },
  { BUTTON_CreateIndirect,   "Add row",           GUI_ID_BUTTON0,   1,    366,  120,  80 },
  { BUTTON_CreateIndirect,   "Delete row",        GUI_ID_BUTTON1,   126,  366,  120,  80 },
  { BUTTON_CreateIndirect,   "",           GUI_ID_BUTTON2,     251,     366, 120, 80, 0, 0x0, 0 },
  { BUTTON_CreateIndirect,   "",               GUI_ID_BUTTON3,    376,     366, 120, 80, 0, 0x0, 0 },
  { BUTTON_CreateIndirect,   "",           GUI_ID_BUTTON4,    501,     366, 120, 80, 0, 0x0, 0 },
  { BUTTON_CreateIndirect,   "Return",           GUI_ID_BUTTON5,     626,     366, 120, 80, 0, 0x0, 0 },
};

static const COL_PROP _aColProps[] = {

  { &quotIN",    100, GUI_TA_HCENTER,    LISTVIEW_CompareText},
  { "Fude",    100, GUI_TA_HCENTER, LISTVIEW_CompareText},
  { "Cycle",   100, GUI_TA_HCENTER,   LISTVIEW_CompareDec },
  { "Cycle1",   100, GUI_TA_HCENTER,   LISTVIEW_CompareDec }
};


/*********************************************************************
*       _IntToStr
* Function description
*  将整数值转换为字符串
*/
static void _IntToStr(char * pBuffer, int Num) {
  char * p;
  char   c;

  if (Num < 0)
    {
    *pBuffer++ = '-';
    Num = -Num;
  }
  p = pBuffer;
  if (Num)
    {
    while (Num)
    {
      *pBuffer++ = '0' + (Num % 10);
      Num /= 10;
    }
  } else {
    *pBuffer++ = '0';
  }
  *pBuffer-- = 0;
  while (p < pBuffer)
  {
    c          = *p;
    *p++       = *pBuffer;
    *pBuffer-- = c;
  }
}
/********************************************************************
*    _AddRow
* Function description
*  adds a new row of data to the given LISTVIEW
*
* Parameter:
*   hItem  - Handle of LISTVIEW widget
*   Insert - 0 for adding a row
*/
static int _AddRow(WM_HWIN hItem, int Insert) {
  int    i;
  int    r;
  int    Len;
  int    NumRows;
  char * apText[4];
  char   acText[4][10] = {{0}};
  char   acBuffer[6];

  strcpy(acText[0], "Mode ");
  NumRows = LISTVIEW_GetNumRows(hItem);
  _IntToStr(acBuffer, NumRows);
  Len = strlen(acBuffer);
  for (i = Len; i < 4; i++)
    {
    strcat(acText[0], " ");
  }
  strcat(acText[0], acBuffer);

  _IntToStr(acText[1], 123);
  _IntToStr(acText[2], 123);
  _IntToStr(acText[3], 123);
  for (i = 0; i < 4; i++)
    {
    apText = acText;
  }
  if (Insert==0)
  {
    r = LISTVIEW_AddRow(hItem, (const GUI_ConstString *)apText);
  }
  return r;
}

/*********************************************************************
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hDlg;
  WM_HWIN hItem;
    int r=0,c=0;
  char * apText[4];
  char   acText[4][10] = {{0}};
  int     Id;
  int     NCode;
  int     i;

  hDlg = pMsg->hWin;
  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
        hItem = pMsg->hWin;
    FRAMEWIN_SetFont(hItem, GUI_FONT_20_ASCII);
    FRAMEWIN_SetText(hItem, "LISTVIEW");
    FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
    FRAMEWIN_SetTitleHeight(hItem, 24);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);  
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON1);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON2);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON3);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON4);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON5);
    BUTTON_SetFont(hItem, GUI_FONT_24_1);

    hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
    HEADER_SetDragLimit(LISTVIEW_GetHeader(hItem), 1);
    LISTVIEW_EnableCellSelect(hItem,1);
    LISTVIEW_SetFont(hItem,GUI_FONT_20B_ASCII);
    LISTVIEW_SetAutoScrollV(hItem, 1);
    LISTVIEW_SetGridVis(hItem, 1);
    LISTVIEW_SetHeaderHeight(hItem,25);
    LISTVIEW_SetRowHeight(hItem,25);
    LISTVIEW_SetRBorder(hItem, 5);
    LISTVIEW_SetLBorder(hItem, 5);
    for (i = 0; i < 4; i++)   //添加列
    {
    LISTVIEW_AddColumn(hItem, _aColProps.Width, _aColProps.pText, _aColProps.Align);
    LISTVIEW_SetCompareFunc(hItem, i, _aColProps.fpCompare);
    }
    LISTVIEW_EnableSort(hItem);
    break;
  case WM_NOTIFY_PARENT:
                Id    = WM_GetId(pMsg->hWinSrc);
                NCode = pMsg->Data.v;
                switch (NCode) {
                case WM_NOTIFICATION_VALUE_CHANGED:
                            break;
                case WM_NOTIFICATION_RELEASED:
                    switch (Id) {
                        case GUI_ID_BUTTON0://添加键
                            hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
                            _AddRow(hItem, 0);
                            break;
                        case GUI_ID_BUTTON1://删除键
                            hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
                            i = LISTVIEW_GetSelUnsorted(hItem);
                            LISTVIEW_DeleteRow(hItem, (i >= 0) ? i : 0);
                            break;
                        case GUI_ID_BUTTON2://调用键
                            break;
                        case GUI_ID_BUTTON3://保存键
                                    
                                break;
                        case GUI_ID_BUTTON4://设置键
                                    
                            break;
                        case GUI_ID_BUTTON5://返回键
                            WM_ShowWindow(hPage[0]);
                                                         WM_HideWindow(hPage[4]);
                             WM_SetFocus(hPage[0]);
                             LED3_OFF;
                              break;
                        case GUI_ID_LISTVIEW0:   

                                hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);                           
                                r = LISTVIEW_GetSel(hItem);                                    
                                c = LISTVIEW_GetSelCol(hItem);     
                                    
                                /*写数据*/
                                _IntToStr(acText[1], 555);                                         
                                apText[1] = acText[1];                                       
                                LISTVIEW_SetItemText(hItem,c,r,(const char *)apText[1]);                           

                                break;
                                }
                    case WM_NOTIFICATION_CLICKED:
                                switch (Id) {
                                     case GUI_ID_LISTVIEW0:                                    
                                    WM_ShowWindow(hNumPad);
                                     LED3_ON;                                    
                                     break;
                                }
                        break;
                        }
                break;
  default:
    WM_DefaultProc(pMsg);
  }
}


WM_HWIN CreateFramewin4(WM_HWIN hParent);
WM_HWIN CreateFramewin4(WM_HWIN hParent) {
    WM_HWIN hWin;
   
    hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, hParent, 0, 0);
    return hWin;
}
大虾吃小虾米
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-10 10:06:32 | 显示全部楼层
不知道为什么程序下半截就变成斜体了
大虾吃小虾米
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-10 11:16:32 | 显示全部楼层
版主,基本功能都实现了,就剩键盘输入没解决,求帮忙看代码[s:130]
大虾吃小虾米
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-7-11 09:49:57 | 显示全部楼层

回 出其不意 的帖子

出其不意:版主,基本功能都实现了,就剩键盘输入没解决,求帮忙看代码[s:130] (2017-07-10 11:16) 
你的界面上面没有添加键盘输入功能啊,只有接个按钮功能。
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-11 10:49:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的界面上面没有添加键盘输入功能啊,只有接个按钮功能。?(2017-07-11 09:49)?
我写的hNumPad就是数字键盘呀,点击ListView时把它显示出来。
大虾吃小虾米
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-11 10:54:23 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的界面上面没有添加键盘输入功能啊,只有接个按钮功能。?(2017-07-11 09:49)?
界面需要单独添加键盘输入功能么。
大虾吃小虾米
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

嵌入式EMwin小虾米

积分
5
 楼主| 发表于 2017-7-11 11:02:46 | 显示全部楼层
我键盘用的是GUI_SendKeyMsg(Key,1)这个发送数字到焦点窗口,这方法是不是不能用在这个ListView里。
大虾吃小虾米
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2017-7-12 01:05:54 | 显示全部楼层

回 出其不意 的帖子

出其不意:我键盘用的是GUI_SendKeyMsg(Key,1)这个发送数字到焦点窗口,这方法是不是不能用在这个ListView里。 (2017-07-11 11:02) 
如果不行的话,就在按钮回调函数里面直接操作listview的选项吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-15 13:23 , Processed in 0.936119 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表