工单界面信息

This commit is contained in:
sc committed 2026-02-21 01:23:14 +08:00
1 parent a778be61f4
commit 532e37aa84
8 files changed
+279 -132

No files matched your search

+79 -68
View File
@@ -17,6 +17,7 @@
#include <guider/generated/events_init.h>
#include <guider/generated/gui_guider.h>
#include <guider/generated/widgets_init.h>
#include <ui_data_labels.h>
/*********************
* DEFINES
*********************/
@@ -36,90 +37,94 @@
/**
* Create a demo application
*/
int16_t g_selected_row = -1;
int16_t Work_row = -1;
int16_t Work_step_row = -1;
// 绘图回调
static void table_style_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *table = lv_event_get_target(e);
lv_obj_t *table = lv_event_get_target(e);
if (code == LV_EVENT_DRAW_PART_BEGIN) {
lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
// 检查是否是单元格绘制
if (dsc->part == LV_PART_ITEMS && dsc->id < LV_TABLE_CELL_NONE) {
uint16_t row = dsc->id / lv_table_get_col_cnt(table);
//uint16_t col = dsc->id % lv_table_get_col_cnt(table);
if (row == 0) { // 表头
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
dsc->label_dsc->color = lv_color_hex(0x000000);
dsc->label_dsc->font = &lv_font_simsun_30;
}// 如果是选中行,绘制蓝色背景
else if (row == g_selected_row) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
}
}
}
/* lv_obj_draw_part_dsc_t *dsc = lv_event_get_draw_part_dsc(e);
if (dsc->part != LV_PART_ITEMS) return;
uint16_t row = dsc->id / lv_table_get_col_cnt(lv_event_get_target(e));
if (row == 0) { // 表头
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
dsc->label_dsc->color = lv_color_hex(0x000000);
dsc->label_dsc->font = &lv_font_simsun_30;
}*/
if (code == LV_EVENT_DRAW_PART_BEGIN) {
lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
// 检查是否是单元格绘制
if (dsc->part == LV_PART_ITEMS && dsc->id < LV_TABLE_CELL_NONE) {
uint16_t row = dsc->id / lv_table_get_col_cnt(table);
//uint16_t col = dsc->id % lv_table_get_col_cnt(table);
if (row == 0) { // 表头
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
dsc->label_dsc->color = lv_color_hex(0x000000);
dsc->label_dsc->font = &lv_font_simsun_30;
}// 如果是选中行,绘制蓝色背景
else if ((row == Work_row)&&(table == guider_ui.screen_list_inf)) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
}
else if ((table == guider_ui.screen_w_list)&&(row == Work_step_row)) {
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
}
}
}
}
//点击事件回调
char value_W[32] = {0};
static void table_click_event_cb(lv_event_t *e) {
lv_obj_t *table = lv_event_get_target(e);
lv_indev_t *indev = lv_indev_get_act();
lv_indev_t *indev = lv_indev_get_act();
if (indev == NULL) return;
if (indev == NULL) return;
char sql[64] = {0};
// 获取点击坐标
lv_point_t point;
lv_indev_get_point(indev, &point);
// 获取点击坐标
lv_point_t point;
lv_indev_get_point(indev, &point);
// 获取 table 区域
lv_area_t table_area;
lv_obj_get_coords(table, &table_area);
// 获取 table 区域
lv_area_t table_area;
lv_obj_get_coords(table, &table_area);
// 计算相对 Y 坐标
int32_t rel_y = point.y - table_area.y1;
// 计算相对 Y 坐标
int32_t rel_y = point.y - table_area.y1;
//通过内容高度和行数计算行高
uint16_t row_cnt = lv_table_get_row_cnt(table);
if (row_cnt == 0) return;
//通过内容高度和行数计算行高
uint16_t row_cnt = lv_table_get_row_cnt(table);
if (row_cnt == 0) return;
// 获取表格内容区域高度(减去边框和padding)
int32_t border_width = lv_obj_get_style_border_width(table, LV_PART_MAIN);
int32_t pad_top = lv_obj_get_style_pad_top(table, LV_PART_MAIN);
int32_t pad_bottom = lv_obj_get_style_pad_bottom(table, LV_PART_MAIN);
// 获取表格内容区域高度(减去边框和padding)
int32_t border_width = lv_obj_get_style_border_width(table, LV_PART_MAIN);
int32_t pad_top = lv_obj_get_style_pad_top(table, LV_PART_MAIN);
int32_t pad_bottom = lv_obj_get_style_pad_bottom(table, LV_PART_MAIN);
int32_t content_h = table_area.y2 - table_area.y1 - border_width * 2 - pad_top - pad_bottom;
int32_t content_h = table_area.y2 - table_area.y1 - border_width * 2 - pad_top - pad_bottom;
// 计算行高
int32_t row_h = content_h / row_cnt;
if (row_h <= 0) return;
// 计算行高
int32_t row_h = content_h / row_cnt;
if (row_h <= 0) return;
// 计算行号
int16_t row = rel_y / row_h;
if (row >= 0 && row < row_cnt) {
g_selected_row = row;
lv_obj_invalidate(table);
//rt_kprintf("row: %d", row);
}
// 计算行号
int16_t row = rel_y / row_h;
if (row >= 0 && row < row_cnt) {
lv_obj_invalidate(table);
//rt_kprintf("row: %d", row);
}
Work_row=-1;
Work_step_row=-1;
//获得来源表
if(table == guider_ui.screen_list_inf)//总览信息/工艺信息
{
Work_row = row;// 写入行号
rt_snprintf(value_W, sizeof(value_W),lv_table_get_cell_value(guider_ui.screen_list_inf, row, 0));
Work_Program_step_ui(value_W);
}
else if(table == guider_ui.screen_w_list){//步骤信息
Work_step_row = row;// 写入行号
if(value_W[0] == '\0') return;
rt_snprintf(sql, sizeof(sql),"%s' AND Step = '%s'",value_W,lv_table_get_cell_value(guider_ui.screen_w_list, row, 0));
Work_Program_stepINF_ui(sql);
}
}
// 初始化样式
@@ -130,7 +135,7 @@ void table_style_init(lv_obj_t *container)
lv_obj_add_event_cb(container, table_click_event_cb, LV_EVENT_CLICKED, NULL);
lv_obj_set_pos(container, 0, 0);
lv_obj_set_scrollbar_mode(container, LV_SCROLLBAR_MODE_OFF);
lv_obj_set_scrollbar_mode(container, LV_SCROLLBAR_MODE_OFF);
//Write style for screen_list_inf, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
lv_obj_set_style_pad_top(container, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
@@ -195,6 +200,12 @@ void custom_init(lv_ui *ui)
guider_ui.screen_list_inf = lv_table_create(guider_ui.screen_inf_list);
table_style_init(guider_ui.screen_list_inf);
lv_table_set_col_cnt(guider_ui.screen_list_inf,6);
guider_ui.screen_w_list = lv_table_create(guider_ui.screen_step_list);
table_style_init(guider_ui.screen_w_list);
lv_table_set_col_cnt(guider_ui.screen_w_list,2);
lv_table_set_row_cnt(guider_ui.screen_w_list,6);
/* Add your codes here */
}
+3 -1
View File
@@ -15,7 +15,9 @@ extern "C" {
#include "guider/generated/gui_guider.h"
extern int16_t g_selected_row;
extern int16_t Work_row;
extern int16_t Work_step_row;
void custom_init(lv_ui *ui);
#ifdef __cplusplus