Wednesday, May 16, 2012

Update data in edit text

ผมออกแบบโปรแกรมซึ่งต้องมีช่องให้ผู้ใช้กรอกข้อมูลตัวเลขบางอย่าง แล้วผมก็เขียน handles มารับค่าเก็บไว้ ซึ่งพบว่ามีปัญหากับการ update ข้อมูลตัวนั้น ดังนั้นวิธีการง่ายๆ ที่จะทำให้ข้อมูล update ทุกครั้งที่ผู้ใช้เปลี่ยนแปลง ก็คือไม่ต้องเก็บใน handles แต่มาใช้คำสั่ง get() รับค่าแล้วใช้ใน callback นั้นๆเลย ก็พอจะแก้ปัญหาเบื้องต้นได้เช่นกัน แต่อย่างไรก็ตามสำหรับการทำงานที่ซับซ้อมผมเองก็ยังแก้ไขอยู่ หากสำเร็จเสร็จแล้ว จะนำมาบอกเล่าเพิ่มเติม

ดังนั้นครั้งนี้ผมเสนอตัวอย่างเพื่อแสดงการแก้ปัญหา ดังที่เขียนถึงด้านบน ด้วยการทำเครื่องคิดเลขอย่างง่ายๆ (และอย่าง... ด้วย) แต่ก็จะเห็นตัวอย่างการใช้งาน คำสั่งต่างๆได้ง่ายครับ ขอให้สังเกตไปที่ callback ของ edittext และ ปุ่ม calculate (ดูในไฟล์ตัวอย่าง)

นี่เป็นตัวอย่าง source code ครับ สังเกตบรรทัดสีเหลืองครับ ใช้ get ไปรับค่าจาก edittext (ในที่นี้ผมตั้งชื่อเป็น firstNo กับ secondNo) จากค่อยเปลี่ยนจากตัวแปร แบบอักษรมาเป็นตัวเลข เพื่อนำไปคำนวนตามหน้าที่ของ callback นั้นๆ

% --- Executes on button press in pushPlus.
function pushPlus_Callback(hObject, eventdata, handles)
% hObject    handle to pushPlus (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
No1 = str2double(get(handles.firstNo,'String'));
No2 = str2double(get(handles.secondNo,'String'));
results=No1+No2;

set(handles.result,'String',results);

guidata(hObject, handles);

ส่วนไฟล์ที่ผมลองทำโหลดได้จากนี่เลยครับ testCal.fig, testCal.m
 

No comments:

Post a Comment