BMS-HOSxP Community
HOSxP => Development => ข้อความที่เริ่มโดย: manoi ที่ มกราคม 03, 2011, 20:57:29 PM
-
เนื่องจากผมได้อธิบายไว้ที่เชียงใหม่ว่าในระบบ UE มีการปรับปรุง Pascal script ใหม่ แต่เนื่องจากเวลามีจำกัดจึงอธิบายทั้งหมดไม่ได้ ขอเปิดกระทู้อธิบายเลยก็แล้วกันนะครับ ;D
อันดับแรกเลยครับ มีการย้าย การวาง Component ไปเป็น Popup Menu ครับ
-
การเขียน Script ควบคุม component ใน Form มีรูปแบบง่ายๆ ดังนี้ครับ
1. สามารถกำหนด Property ของ Component ต่างๆ ได้ โดยการใช้ Type Casting ผ่าน UEForm.FindComponent ครับ เช่น หากต้องการกำหนด Property caption ของ Label ใน Form ก็สามารถเขียนคำสั่งได้ดังตัวอย่าง
TLabel(UEForm.FindComponent('UELabel8681')).Caption := 'Test Caption';
-
2. Property ที่สามารถกำหนดได้ ตอนนี้จะเป็นเฉพาะ key Property ที่สำคัญๆ ครับ เช่น TEdit ก็จะเป็น Text
-
3. การประกาศตัวแปร สามารถประกาศได้เลย โดยใช้คำสำคัญว่า var ข้างหน้า แล้วเรียกใช้งานบรรทัดถัดไปได้เลยครับ เช่น
var i : Integer;
for i:=1 to 10 do
begin
TListBox(UEForm.FindComponent('UEListBox7027')).items.add(IntToStr(i));
end;
-
4. มี Component ที่สามารถเพิ่มเข้าไปใน Form ได้อีก 1 ตัวคือ DBGrid ครับ สามารถกำหนด Column ได้โดยการคลิกขวาที่ Grid แล้วเลือก DBGrid Properties
-
DBGrid ทุกตัวที่สร้างเอาไว้ จะมี DataSource / DataSet สร้างให้อัตโนมัติครับ สามารถดึงข้อมูลมาใส่ใน Dataset ด้วยคำสั่ง SQL ผ่านปุ่ม Assign SQL Data ได้ครับ (เพื่อนำมาแสดงเป็นตัวอย่างตอนออกแบบก่อน)
จากนั้นจึงค่อยกำหนด Property FieldName ครับว่าจะให้นำค่าจาก Field อะไรมาแสดง
-
เราสามารถกำหนดให้ดึงข้อมูลอะไรก็ได้มาแสดงใน DbGrid โดยใช้วิธี Type Casting แบบนี้ครับ
TClientDataset(TDBGrid(UEForm.FindComponent('UEDBGrid3371')).DataSource.Dataset).Data :=HOSxP_GetDataset('select * from pttype');
-
หรือจะสร้าง ClientDataset ตัวใหม่ขึ้นมาแล้วกำหนดให้กับ DBGrid ผ่าน DataSource ครับ เช่น
var cds:TClientDataset;
cds:=TClientDataset.create(UEForm);
cds.data:=HOSxP_GetDataset('select * from pttype');
cds.first;
while not cds.eof do
begin
cds.edit;
cds.fieldbyname('name').asstring:='Test edit pttype name : '+cds.fieldbyname('pttype').asstring;
cds.post;
cds.next;
end;
TDBGrid(UEForm.FindComponent('UEDBGrid3371')).DataSource.DataSet := cds;
-
Function อื่นๆ ที่สามารถเรียกใช้ได้ในระบบ UE Script ตอนนี้ก็ตามรูปเลยครับ
ตัวอย่าง function ที่น่าจะได้ใช้ประโยชน์เช่น GetGlobalValue('vn') จะเป็นการนำค่า VN ของ Visit ที่กำลังบันทึกข้อมูลมาใช้ครับ
-
;D ;D ;D ขอบคุณครับ
-
ขอบคุณครับ :D :D :D
-
... ขอลคุณอาจารย์ มากๆ ครับ ... :D .....
-
... ขอลคุณอาจารย์ มากๆ ครับ ... :D .....
;D ;D อ.ขวดสงสัยจะรีบไปทดสอบ ;D ;D
ขอบคุณมากครับ :D
-
... ขอลคุณอาจารย์ มากๆ ครับ ... :D .....
;D ;D อ.ขวดสงสัยจะรีบไปทดสอบ ;D ;D
ขอบคุณมากครับ :D
ระยะหลังนี้ Admin ดุกันทุกคน..ใครพลาด ...โดนยิงพรุนเลย..ใ่ช่มั๋ย..ท่านบ่อดิน... ;D ;D ;D ;D ;D
-
ระยะหลังนี้ Admin ดุกันทุกคน..ใครพลาด ...โดนยิงพรุนเลย..ใ่ช่มั๋ย..ท่านบ่อดิน... ;D ;D ;D ;D ;D
;D ;D ;D
-
... ขอลคุณอาจารย์ มากๆ ครับ ... :D .....
;D ;D อ.ขวดสงสัยจะรีบไปทดสอบ ;D ;D
ขอบคุณมากครับ :D
ระยะหลังนี้ Admin ดุกันทุกคน..ใครพลาด ...โดนยิงพรุนเลย..ใ่ช่มั๋ย..ท่านบ่อดิน... ;D ;D ;D ;D ;D
พี่ก็ปล่อยผ่านไปแล้วนะ เดี่ยวจะหาว่าจุกจิก เจอน้องบ่อดิน(ทับ) "ถม" เข้าไปซะ
-
... ขอลคุณอาจารย์ มากๆ ครับ ... :D .....
;D ;D อ.ขวดสงสัยจะรีบไปทดสอบ ;D ;D
ขอบคุณมากครับ :D
ระยะหลังนี้ Admin ดุกันทุกคน..ใครพลาด ...โดนยิงพรุนเลย..ใ่ช่มั๋ย..ท่านบ่อดิน... ;D ;D ;D ;D ;D
พี่ก็ปล่อยผ่านไปแล้วนะ เดี่ยวจะหาว่าจุกจิก เจอน้องบ่อดิน(ทับ) "ถม" เข้าไปซะ
ตอนหลังต้องระวังการ post เพราะว่า มีคุณครูประถมอยู่ในบอร์ดหลายคนครับ อ.ขวด
ต้องเข้าใจบ้างเรื่องก็เร็ว บ้างเรื่องก็ช้า ครับ
;D
-
พี่ก็ปล่อยผ่านไปแล้วนะ เดี่ยวจะหาว่าจุกจิก เจอน้องบ่อดิน(ทับ) "ถม" เข้าไปซะ
ไม่ได้ทำอย่างนั้นเลยนะครับ ;D ;D ;D แค่เน้นตัวหนังสือสีแดงครับ
-
เมื่อก่อนใช้ UE แล้ว บันทึกอย่างเดียววันนี้สามารถเอาลูกเล่นมาใส่ได้แล้วครับ
ลองแล้ว โอเคเลยครับ ที่อยากได้ GetGlobalValue('vn') ;D ;D
ขอบคุณอาจารย์มากเลยครับ
-
สอบถามครับ ผมลอง code ใน UE แบบนี้
TLabel(UEForm.FindComponent('UELabel470')).caption := 'Test';
ขึ้นว่า Undeclared Identifier 'UEForm' ผมควรเขียน code อย่างไรครับ เพื่อจะ reference ถึง component ได้
ทดสอบใน 3.54.xx
ขอบคุณครับ