บทที่หน่วย 1;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutilils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ, comctrls, stdctrls, extctrls, กริด, ปฏิทิน, มาตรวัด, jpeg;
พิมพ์
tform1 = คลาส (tform)
รูปร่าง 1: ฟอร์ด;
รูปร่าง 2: สำหรับกระแสน้ำ;
รูปร่าง 3: ตรงกันข้าม;
รูปร่าง 4: สำหรับกระแสน้ำ;
รูปร่าง 5: แท็บ;
รูปร่าง 6: สำหรับกระแสน้ำ;
รูปร่าง 7: สำหรับกระแสน้ำ;
รูปร่าง 8: ตรงกันข้าม;
รูปร่าง 9: สำหรับกระแสน้ำ;
Shape10: สำหรับการหยุดพัก;
รูปร่าง 11: ตรงกันข้าม;
Shape12: Formore;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
Edit1: Tedit;
แก้ไข 2: titit;
แก้ไข 3: Tedit;
แก้ไข 4: titit;
แก้ไข 5: titit;
แก้ไข 6: titit;
แก้ไข 7: Teded;
แก้ไข 8: titit;
แก้ไข 9: titit;
edit10: titit;
แก้ไข 11: Teded;
Edit12: Tedit;
edit13: titit;
Edit16: Tedit;
edit15: titit;
Edit16: Tedit;
edit17: titit;
Edit18: Tedit;
Edit19: Tedod;
Edit20: Teded;
Edity21: titit;
EDIT22: teep;
edit23: titit;
EDIT24: TEDIT;
edit25: titit;
EDIT26: TITIT;
edit27: titit;
edit22: titit;
ปุ่ม 1: tbutton;
EDIT2T2: Tited;
Timer1: Timtimer;
ตัวจับเวลา 2: เวลา;
listbox1: tlistbox;
GAUGE1: TGAUGE;
GAUGE2: TGAUGE;
GAUGE3: TGAUGE;
GAUGE4: TGG;
label1: tlabel;
label2: tlabel;
label3: tlabel;
label4: tlabel;
Edit30: Tedit;
Image1: timage;
label5: tlabel;
button2: tbutton;
ตัวจับเวลา 3: ทิมเตอร์;
ปุ่ม 4: tbutton;
ปุ่ม 5: Tbutton;
ปุ่ม 3: tbutton;
label6: tlabel;
ปุ่ม 6: tbutton;
ตัวจับเวลา 4: ทิมเตอร์;
ขั้นตอน Timer1Stimer (ผู้ส่ง: tobject);
ขั้นตอน button1click (ผู้ส่ง: tobject);
ขั้นตอน Timer2Timer (ผู้ส่ง: tobject);
ขั้นตอน button2click (ผู้ส่ง: tobject);
ขั้นตอนการจับเวลา 33Timer (ผู้ส่ง: tobject);
ขั้นตอน button3click (ผู้ส่ง: tobject);
ขั้นตอน button4click (ผู้ส่ง: tobject);
ขั้นตอน button5click (ผู้ส่ง: tobject);
โพรซีเดอร์แบบฟอร์ม (ผู้ส่ง: tobject);
ขั้นตอน button6click (ผู้ส่ง: tobject);
ขั้นตอน Timer4Timer (ผู้ส่ง: tobject);
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
พิมพ์
PCB = บันทึก
ชื่อ: สตริง;
ARV: จำนวนเต็ม;
SVT: จำนวนเต็ม;
STT: จำนวนเต็ม;
FNT: จำนวนเต็ม;
ZZSJ: จำนวนเต็ม;
DQSJ: จริง;
fnhflflg: bool;
sttflg: boob;
จบ;
PCBX = Array [1.4] ของ PCB;
วาจา
nullflag: bol = false;
forword: bol = false;
Subemp: Integer = 0;
J: จำนวนเต็ม = 1;
openflg: bolo = true;
tempid: จำนวนเต็ม = 1;
fnehnum: จำนวนเต็ม = 0;
pcbum: จำนวนเต็ม = 0;
NTP: bol = false;
Tempok: bol = false;
ธง: bol = false;
Form1: TFORM1;
แสดง: tdatetime;
นับ: จำนวนเต็ม = -1;
Pro: Integer = 0;
// pcbad: จำนวนเต็ม = 1;
writflg: จำนวนเต็ม = 0;
PCBS: PCBX;
แม้ว่าขั้นต่ำวินาที MSEC: Word;
วิธีการ: จำนวนเต็ม = 1;
การดำเนินการ
ใช้ยูนิต 3;
{$ r * .dfm}
ขั้นตอน tform1.timer1p1.timer1timer (ผู้ส่ง: tobject);
วาจา
W: จำนวนเต็ม;
F: จำนวนเต็ม;
เริ่ม
ถ้า flag = true และ nullflag = false แล้วเท็จ远为 true
เริ่ม
นับ: = นับ + 1;
listboxes1.items.add (inttoStr (นับ);
สำหรับ w: = 1 ถึง 4 ทำ
เริ่ม
ถ้า pcbs [w] .Arv = counten
เริ่ม
timer2.enabled: = false;
pcbum: = pcbnum + 1;
timer2.enabled: = true;
จบ;
จบ;
ถ้า openflg = false แล้ว
เริ่ม
ถ้านับ (count = pcbs [tempid] .stt + pcbs [tempid] .svt) แล้ว
เริ่ม
PCBs [Tempid] .fnhflg: = true;
fnehnum: = fnehre + 1;
ถ้า fnehnum = 4 แล้ว
เริ่ม
ธง: = เท็จ;
pcbs [1] .fnt: = pcbs [1] .stt + pcbs [1] .svt;
pcbs [1] .zzzsj: = pcbs [1] .fnt-pcbb [1] .Arv;
pcbs [1] .dqsj: = pcbs [1] .zzsj / (pcbs [1] .lnt);
PCBS [2] .FNT: = PCBS [2] .STT + PCBS [2] .SVT;
pcbs [2] .zzzsj: = pcbs [2] .fnt-pcbs [2] .Arv;
PCBS [2] .DQSJ: = PCBS [2] .ZZSJ / (PCBS [2] .ltt);
PCBS [3] .FNT: = PCBS [3] .STT + PCBS [3] .SVT;
pcbs [3] .zzzsj: = pcbs [3] .fnt-pcbs [3 .Arv;
PCBS [3] .DQSJ: = PCBS [3] .ZZSJ / (PCBS [3] .LTT);
pcbs [4] .fnt: = pcbs [4] .stt + pcbs [4] .svt;
pcbs [4] .zzzsj: = pcbs [4] .fnt-pcbs [4] .Arv;
PCBS [4] .DQSJ: = PCBS [4] .ZZSJ/ (PCBS [4] .TT);
EDIT13.Text: = intToStr (PCBS [1] .TT);
edit14.Text: = intToStr (PCBS [1] .STT + PCBS [1] .SVT);
EDIT15.Text: = intToStr (PCBS [1] .zzSJ);
edit16.Text: = flattOSTR (PCBS [1] .DQSJ);
editi7.Text: = intToStr (PCBS [2] .STT);
editi.text: = inttoStr (pcbs [2] .stt + pcbs [2] .svt);
EDIT19.Text: = intToStr (PCBS [2] .zzSJ);
edit20.Text: = flattOSTR (PCBS [2] .DQSJ);
edit21.Text: = intToStr (PCBS [3] .TT);
EDIT22.Text: = intToStr (PCBS [3] .STT + PCBS [3 .SVT);
EDIT23.Text: = intToStr (PCBS [3] .zzSJ);
EDIT24.Text: = FlattOSTR (PCBS [3] .DQSJ);
EDIT25.Text: = intToStr (PCBS [4] .TT);
EDIT26.Text: = intToStr (PCBS [4] .STT + PCBS [4] .SVT);
edit27.Text: = intToStr (PCBS [4] .zzSJ);
EDIT22.Text: = flofOSTR (PCBS [4] .DQSJ);
จบ;
openflg: = true; // 改 !!!!!!!!
Tempok: = false;
จบ;
จบ;
สำหรับ f: = 1 ถึง 4 ทำ
เริ่ม
if (count = pcbs [f] .stt + pcbs [f] .svt) และ pcbsvt1
listbr.idds.add (pcbs [f] .name + '完成 !!!!');
จบ; // สำหรับ
สิ้นสุด; // flag = ture
ถ้า openflg = false แล้ว
เริ่ม
เคสเทมเพอร์ของ
1: เริ่มต้น
ifcls [1] .SVT = 1 แล้ว
เริ่ม
GAUGE1.MAXVALUE: = 2;
GAUGE1.Progress: = 2;
จบ
อื่น
เริ่ม
GAUGE1.MAXVALUE: = PCBS [1] .SVT;
GAUGE1.Progress: = Count-PCBS [1] .STT;
จบ;
สิ้นสุด;
2: เริ่มต้น
GAUGE2.MAXVALUE: = PCBS [2] .SVT;
GAUGE2.Progress: = Count-PCBS [2] .STT;
สิ้นสุด;
3: เริ่มต้น
GAUGE3.MAXVALUE: = PCBS [3] .SVT;
GAUGE3.Progress: = count-pcbs [3] .stt;
สิ้นสุด;
4: เริ่มต้น
GAUGE4.MAXVALUE: = PCBS [4] .SVT;
GAUGE4.Progress: = count-pcbs [4] .tt;
จบ; // 4;
สิ้นสุด;
สิ้นสุด; // ถ้า openflg = เท็จ
ถ้า pcbs [1] .fnhflg = true แล้ว
GAUGE1.Progress: = PCBS [1] .SVT;
ถ้า pcbs [2] .fnhflg = tue แล้ว
GAUGE2.Progress: = PCBS [2] .SVT;
ถ้าพีซี [3] .fnhflg = อังคารแล้ว
GAUGE3.Progress: = PCBS [3] .SVT;
iff pcs [4] .fnhflg = true แล้ว
GAUGE4.Progress: = PCBS [4] .SVT;
สิ้นสุด;
ขั้นตอน tform1.button1click (ผู้ส่ง: tobject);
เริ่ม
button2.enabled: = false;
timer3.Enabled: = false;
timer2.enabled: = true;
timer1.enabled: = true;
timer4.enabled: = false;
พยายาม
ธง: = จริง;
pcbs [1] .name: = edit1.orthtatext;
PCBS [1] .Arv: = strtint (edit2.text);
pcbs [1] .svt: = strtouch (edit3.Text);
PCBS [1]
pcbs [1] .fnhflg: = false;
pcbs [2] .name: = edit4.text;
PCBS [2] .Arv: = strtint (editt5.Text);
pcbs [2] .svt: = strtouch.text);
PCBs [2] .sttflg: = false;
pcbs [2] .fnhflg: = false;
pcbs [3] .name: = edit7.text;
PCBS [3] .Arv: = strtint (edit8.text);
pcbs [3] .svt: = strtouch (edit9.Text);
pcbs [3] .sttflg: = false;
pcbs [3] .fnhflg: = false;
pcbs [4] .name: = edit10.text;
PCBS [4] .Arv: = strtint (edit11.Text);
pcbs [4] .svt: = strtoot (edit12.text);
PCBS [4]
pcbs [4] .fnhflg: = false;
nullflag: = false;
ยกเว้น
nullflag: = true;
Showage ('请将数据填完整');
จบ;
จบ;
ขั้นตอน tform1.timer2timer (ผู้ส่ง: tobject);
วาจา
ฉัน: จำนวนเต็ม;
เริ่ม
ถ้า fnehnum <pcbox แล้ว
เริ่ม
if (openflg = true) และ (pcbumd> 0))))))
เริ่ม
สำหรับ i: = 1 ถึง pcbruc stir
เริ่ม
ถ้า pcbs [i] .fnhflg = false
เริ่ม
ถ้า tempok = false แล้ว
เริ่ม
suremp: = tempid;
Tempid: = i;
Tempok: = true;
จบ;
ถ้า pcbs [i] .svt <pcbs [tempid] .svt แล้ว
เริ่ม
//timer1.enabled:/false;
Tempid: = i;
//timer1.enabled: lue;
สิ้นสุด; // ถ้า pcbs [i] .svt <pcs [tempid] .svt
สิ้นสุด; // สำหรับ
จบ;
openflg: = false;
PCBs [Tempid] .stt: = นับ;
PCBs [Tempid] .sttflg: = true;
//listbox1.idd.add ('进程' + pcbs [subtem] .name + 'fnh');
listboxes.atms.add ('进程' + pcbs [tempid] .name + '被调度');
สิ้นสุด;
สิ้นสุด; // ถ้า fnhnum <pcbnum
จบ; // ขั้นตอน
ขั้นตอน TFORM1.Button2Click (ผู้ส่ง: TOBJECT);
เริ่ม
button1.enabled: = false;
timer1.enabled: = false;
timer2.enabled: = false;
timer3.Enabled: = true;
timer4.enabled: = true;
พยายาม
ธง: = จริง;
pcbs [1] .name: = edit1.orthtatext;
PCBS [1] .Arv: = strtint (edit2.text);
pcbs [1] .svt: = strtouch (edit3.Text);
PCBs [1] .sttflg: = true;
pcbs [1] .fnhflg: = false;
pcbs [2] .name: = edit4.text;
PCBS [2] .Arv: = strtint (editt5.Text);
pcbs [2] .svt: = strtouch.text);
PCBs [2] .sttflg: = false;
pcbs [2] .fnhflg: = false;
pcbs [3] .name: = edit7.text;
PCBS [3] .Arv: = strtint (edit8.text);
pcbs [3] .svt: = strtouch (edit9.Text);
pcbs [3] .sttflg: = false;
pcbs [3] .fnhflg: = false;
pcbs [4] .name: = edit10.text;
PCBS [4] .Arv: = strtint (edit11.Text);
pcbs [4] .svt: = strtoot (edit12.text);
PCBS [4]
pcbs [4] .fnhflg: = false;
nullflag: = false;
ยกเว้น
nullflag: = true;
Showage ('请将数据填完整');
จบ;
จบ;
ขั้นตอน tform1.timer3timer3timerter (ผู้ส่ง: tobject);
วาจา
M: จำนวนเต็ม;
เริ่ม
if (flag = true) และ (ntp = false) และ (nullflag = false)) แล้ว
เริ่มต้น // ถ้า falg = true แล้ว
นับ: = นับ + 1;
listboxes1.items.add (inttoStr (นับ);
สำหรับ M: = 1 ถึง 4DO
เริ่มต้น // สำหรับ m: = 1 ถึง 5 ทำ
if ((pcbs [m] .sttfg = true) และ (pcbs [m] .fnhflg = false))
เริ่มต้น // ถ้า (pcb [m] .sttflg = true และ pcb [m] .fnhflg = false)
ถ้า count = pcbs [m] .stt + pcbs [m] .svt แล้ว
เริ่มต้น // ถ้า (count = pcbs [m] .stt + pcbs [m] .svt) แล้ว
pcbs [m] .fnhflg: = true;
//timer4.enportdi: = false;
Pro: = 0;
//timer4.enportd: = true;
listbox1.itms.add ('进程:' + pcbs [m] .name + '完成 !!!!');
ถ้า m <4 แล้ว
เริ่มต้น // ถ้า m <4 จากนั้น
// pcbs losm+1 จาก. stttlg: = true;
// pcbs losm+1 ของ. stt: = count;
forword: = true;
สิ้นสุด; // ถ้า m <4
pcbs [m] .fnt: = count;
pcbs [m] .zzzsj: = pcbs [m] .fnt-pcbs [m] .Arv;
pcbs [m] .dqsj: = pcbs [m] .zzsj / (pcbs [m] .ldt);
สิ้นสุด; // ถ้า (count = pcbs [m]
สิ้นสุด;
สิ้นสุด; // สำหรับ m: = 1 ถึง 5 ทำ
iff pcs [4] .fnhflg = true แล้ว
เริ่ม
ntp: = true;
EDIT13.Text: = intToStr (PCBS [1] .TT);
edit14.Text: = intToStr (PCBS [1] .STT + PCBS [1] .SVT);
EDIT15.Text: = intToStr (PCBS [1] .zzSJ);
edit16.Text: = flattOSTR (PCBS [1] .DQSJ);
editi7.Text: = intToStr (PCBS [2] .STT);
editi.text: = inttoStr (pcbs [2] .stt + pcbs [2] .svt);
EDIT19.Text: = intToStr (PCBS [2] .zzSJ);
edit20.Text: = flattOSTR (PCBS [2] .DQSJ);
edit21.Text: = intToStr (PCBS [3] .TT);
EDIT22.Text: = intToStr (PCBS [3] .STT + PCBS [3 .SVT);
EDIT23.Text: = intToStr (PCBS [3] .zzSJ);
EDIT24.Text: = FlattOSTR (PCBS [3] .DQSJ);
EDIT25.Text: = intToStr (PCBS [4] .TT);
EDIT26.Text: = intToStr (PCBS [4] .STT + PCBS [4] .SVT);
edit27.Text: = intToStr (PCBS [4] .zzSJ);
EDIT22.Text: = flofOSTR (PCBS [4] .DQSJ);
จบ;
สำหรับ M: = 1 ถึง 4 ทำ
เริ่ม
if (count> = pcbs [m] .arv) และ (pcbs [m] .sttfg = false)) แล้ว
ถ้า forword = true แล้ว
เริ่ม
pcbs [m] .sttfg: = true;
pcbs [m] .stt: = นับ;
forword: = false;
สิ้นสุด; // 3and
สิ้นสุด; // สำหรับ M: = 1 ถึง 4
GAUGE1.MAXVALUE: = PCBS [1] .SVT;
GAUGE2.MAXVALUE: = PCBS [2] .SVT;
GAUGE3.MAXVALUE: = PCBS [3] .SVT;
GAUGE4.MAXVALUE: = PCBS [4] .SVT;
ถ้า pcbs [1] .sttflg = true และ pcbs [1] .fnhflg = false
เริ่ม
//gauge1.progressive:=gaugh1.MaxValue: = PCBS CES1 พร้อมใช้งาน shtt;
GAUGE1.Progress: = Count-PCBS [1] .STT;
end // iffbs [1] .sttflg = true และ pcbs [1] .fnhflg = false
อื่น ๆ iff pcs [1] .fnhflg = true แล้ว
GAUGE1.Progress: = PCBS [1] .SVT;
ถ้าพีซี [2] .sttfg = true และ pcbs [2] .fnhflg = false
เริ่ม
GAUGE2.Progress: = Count-PCBS [2] .STT;
end // iffbs [1] .sttflg = true และ pcbs [1] .fnhflg = false
elee ถ้า pcbs [2] .fnhflg = tue แล้ว
GAUGE2.Progress: = PCBS [2] .SVT;
ถ้าพีซี [3] .sttfg = true และ pcbs [3 .fnhflg = false
เริ่ม
GAUGE3.Progress: = count-pcbs [3] .stt;
end // iffbs [1] .sttflg = true และ pcbs [1] .fnhflg = false
elee ถ้า pcbs [3] .fnhflg = tue แล้ว
GAUGE3.Progress: = PCBS [3] .SVT;
ถ้าพีซี [4] .sttflg = true และ pcbs [4] .fnhflg = false
เริ่ม
GAUGE4.Progress: = count-pcbs [4] .tt;
end // iffbs [1] .sttflg = true และ pcbs [1] .fnhflg = false
elee ถ้า pcbs [4] .fnhflg = tue แล้ว
GAUGE4.Progress: = PCBS [4] .SVT;
จบ; // ถ้า falg = true แล้ว
สิ้นสุด;
ขั้นตอน tform1.button3click (ผู้ส่ง);
เริ่ม
Form1.close;
//end.//do มากกว่า
จบ;
ขั้นตอน tform1.button4click (ผู้ส่ง: tobject);
เริ่ม
forword: = false;
Subemp: = 0;
J: = 1;
openflg: = true;
Tempid: = 1;
fnehnum: = 0;
pcbum: = 0;
NTP: = FALSE;
Tempok: = false;
ธง: = เท็จ;
GAUGE1.Progress: = 0;
GAUGE2.Progress: = 0;
GAUGE3.Progress: = 0;
GAUGE4.Progress: = 0;
button2.enported: = true;
button1.enabled: = true;
นับ: = - 1;
Pro: = 0;
// pcbad: จำนวนเต็ม = 1;
writflg: = 0;
ธง: = เท็จ;
nullflag: = false;
edit1.Text: = ';
edit2.text: = ';
EDIT3.Text: = ';
Edit4.Text: = ';
Edit5.Text: = ';
แก้ไข 6.Text: = ';
แก้ไข 7.Text: = ';
แก้ไข 8.Text: = ';
แก้ไข 9.Text: = ';
แก้ไข 9.Text: = ';
Edit11.Text: = ';
edit12.Text: = ';
EDIT13.Text: = '系统填写';
edit14.Text: = '系统填写';
edit15.Text: = '系统填写';
edit16.Text: = '系统填写';
editian.text: = '系统填写';
editi.text: = '系统填写';
edit19.Text: = '系统填写';
edit20.text: = '系统填写';
edit21.Text: = '系统填写';
edit22.text: = '系统填写';
EDIT23.Text: = '系统填写';
edit24.Text: = '系统填写';
edit25.Text: = '系统填写';
edit26.Text: = '系统填写';
edit27.Text: = '系统填写';
edit22.text: = '系统填写';
pcbs [1] .fnhflg: = false;
PCBS [1]
pcbs [2] .fnhflg: = false;
PCBs [2] .sttflg: = false;
pcbs [3] .fnhflg: = false;
pcbs [3] .sttflg: = false;
pcbs [4] .fnhflg: = false;
PCBS [4]
จบ;
ขั้นตอน tform1.button5click (ผู้ส่ง: tobject);
เริ่ม
Form3.Show;
จบ;
ขั้นตอน TFORM1.Field: การคัดค้าน);
เริ่ม
form100fieldstyle: = fssstsyontop;
EposateWindow (Handle, 2000, AW_CENTER);
form100formstyle: = fsnormal;
จบ;
ขั้นตอน tform1.button6click (ผู้ส่ง: tobject);
เริ่ม
edit1.text: = 'a';
edit2.text: = '0';
EDIT3.Text: = '3';
edit4.Text: = 'B';
Edit5.Text: = '5';
แก้ไข 6.Text: = '2';
แก้ไข 7.Text: = 'C';
edit8.text: = '5';
Edit9.Text: = '3';
Edit19.Text: = 'D';
EDIT11.Text: = '5';
edit12.text: = '2';
จบ;
ขั้นตอน tform1.timer4timer4timer (ผู้ส่ง: tobject);
เริ่ม
if ((pcbs [1] .ARV = นับ) และ (pcbs [1] .sttflg = false)) จากนั้น
เริ่ม
forword: = true;
จบ;
จบ;
จบ.
หน่วยหน่วย 2;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutilils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ, jpeg, extctrls, stdctrls;
พิมพ์
tform2 = คลาส (tform)
Image1: timage;
label1: tlabel;
label2: tlabel;
label3: tlabel;
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
พิมพ์
PCB = บันทึก
ชื่อ: สตริง;
ARV: จำนวนเต็ม;
SVT: จำนวนเต็ม;
STT: จำนวนเต็ม;
FNT: จำนวนเต็ม;
ZZSJ: จำนวนเต็ม;
DQSJ: จริง;
fnhflflg: bool;
sttflg: boob;
จบ;
PCBX = Array [1.4] ของ PCB;
วาจา
Form2: tform2;
PCBS: PCBX;
การดำเนินการ
ใช้ยูนิต 1;
{$ r * .dfm}
จบ.
หน่วยหน่วย 3;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutilils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ, stdctrls, comctrls, jpeg, extctrls;
พิมพ์
tform3 = คลาส (tform)
RICHEDIT1: Trichit;
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
วาจา
Form3: TFORM3;
การดำเนินการ
{$ r * .dfm}
จบ.