Event
Event-driven
เป็นการเขียนโปรแกรมให้ object แสดงผลเมื่อเกิดเหตุการต่างๆเกิดขึ้นกับตัว object เช่น ถูกคลิก ถูกลาก มีการเปลี่ยนค่า โดยเราสามารถกำหนดให้ object อื่นแสดงผลต่อเนื่องได้ด้วย นอกเหนือจาก object ที่เราไป
เราสามารถเรียกให้ object เรียกใช้ event ได้ด้วยคำสั่งดังนี้
lv_obj_set_event_cb(object,event_fuction,input_event,interact_object);Button event
เราสามารถสร้าง event ต่างๆ ให้เกิดขึ้นเมื่อมีการกดปุ่มได้โดยตัวอย่างที่ยกมาจะเป็นการเป็นการแสดงผลผ่านทาง terminal และ แสดงผลบน Label โดยเราสามารถเริ่มต้นได้โดยสร้างปุ่มกดขึ้นมา
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_set_size(btn, 100, 50);
lv_obj_center(btn);
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL);
lv_obj_t * label = lv_label_create(btn);
lv_label_set_text(label, "Click me!");
lv_obj_center(label);lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_set_size(btn, 100, 50);
lv_obj_center(btn);
lv_obj_t * btn_label = lv_label_create(btn);
lv_label_set_text(btn_label, "Click me!");
lv_obj_center(btn_label);
lv_obj_t * info_label = lv_label_create(lv_scr_act());
lv_label_set_text(info_label, "The last button event:\nNone");
lv_obj_add_event_cb(btn, event_cb, LV_EVENT_ALL, info_label);สร้างฟังก์ชั่น Event ที่จะให้แสดงผลขึ้น
Event แสดงผลบน Terminal เมื่อมีการกดเกิดขึ้น
static void event_cb(lv_event_t * e)
{
LV_LOG_USER("Clicked");
static uint32_t cnt = 1;
lv_obj_t * btn = lv_event_get_target(e);
lv_obj_t * label = lv_obj_get_child(btn, 0);
lv_label_set_text_fmt(label, "%d", cnt);
cnt++;
}static void event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t * label = lv_event_get_user_data(e);
switch(code) {
case LV_EVENT_PRESSED:
lv_label_set_text(label, "The last button event:\nLV_EVENT_PRESSED");
break;
case LV_EVENT_CLICKED:
lv_label_set_text(label, "The last button event:\nLV_EVENT_CLICKED");
break;
case LV_EVENT_LONG_PRESSED:
lv_label_set_text(label, "The last button event:\nLV_EVENT_LONG_PRESSED");
break;
default:
break;
}
}Checkbox event
จากของเดิม object ที่เป็น button เราจะเปลี่ยนเป็น Checkbox โดยยังเก็บ object status_label ไว้เพื่อแสดงผลโดยเราจะสร้าง checkbox ด้วยคำสั่งต่อไปนี้
สร้างฟังก์ชั่น Event ขึ้นมา
Switch event
เช่นเดียวกับ checkbox เราจะสร้าง object switch ขึ้นมาและกำหนด event ให้กับมันเพื่อที่จะทำให้ object label เปลี่ยนไป
สร้างฟังก์ชั่น Event ขึ้นมา
Dropdown event
Dropdown เป็น object ที่ใช้สำหรับเก็บตัวเลือกหลายๆตัว ไว้ด้วยกัน ดังนั้นการเลือก Dropdown มาเพื่อใช้ในการช่วยควบคุม object อื่นเป็นตัวเลือกที่ใช้งานค่อนข้างบ่อย เริ่มต้นด้วยการสร้าง Dropdown ขึ้นมา
สร้างฟังก์ชั่น Event ขึ้นมา
Last updated
Was this helpful?