UNIT USWLMSELECTDA;
{$ s-, w-, r-}
{$ c preload}
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ประเภท, คลาส, กราฟิก, การควบคุม, stdctrls, รูปแบบ,
strutils, คณิตศาสตร์, adoDB, tflatbuttonunit, uswlmstyleedit;
พิมพ์
teditDatatype = (sdstring, sdinteger, sdfloat, sdmoney, sddate);
tvalignment = (tvatopjustify, tvacenter, tvabottomjustify);
tdatastyle = (dsbm, dszj, dsmc);
พิมพ์
tselectda = คลาส (tcustomControl)
ส่วนตัว
fpen: tpen;
fbrush: tbrush;
ffont: tfont;
fcaption: สตริง;
fbmtext: สตริง;
fzjtext: สตริง;
fmctext: สตริง;
fdatatype: teditdatatype;
fprecision: จำนวนเต็ม;
Freadonly: บูลีน;
FeditFont: tfont;
fhalignment: ความสามารถ;
fvalignment: tvalignment;
Fedit: tstyleedit;
Fbutton: Tflatbutton;
ftitlename: สตริง;
ftablename: String;
fdatastyle: tdatastyle;
fbmfield: สตริง;
fzjfield: สตริง;
fmcfield: สตริง;
fonclick: tnotifyevent;
Fonenter: tnotifyevent;
Fonexit: tnotifyevent;
Fonkeypress: TKEYPRESSEVENT;
ขั้นตอน setpen (ค่า const: tpen);
ขั้นตอน setBrush (ค่า const: tbrush);
ขั้นตอน setFont (ค่า const: tfont);
SetCaption ขั้นตอน (ค่า const: String);
ขั้นตอน setBmtext (ค่า const: สตริง);
โพรซีเดอร์ setzjtext (ค่า const: สตริง);
ขั้นตอน setMcText (ค่า const: สตริง);
ขั้นตอน setDatatype (ค่า const: teditDatatype);
ขั้นตอนการตั้งค่า (ค่า const: จำนวนเต็ม);
ขั้นตอน setReadOnly (ค่า const: บูลีน);
ขั้นตอน setEditFont (ค่า const: tfont);
ขั้นตอน sethalignment (ค่า const: talignment);
ขั้นตอน setValignment (ค่า const: tvalignment);
ขั้นตอน setTitLename (ค่า const: String);
Procedure Settablename (ค่า const: String);
ขั้นตอน setDatastyle (ค่า const: tdatastyle);
ขั้นตอน setBmfield (ค่า const: สตริง);
ขั้นตอน setzjfield (ค่า const: สตริง);
ขั้นตอน setmcfield (ค่า const: สตริง);
ฟังก์ชั่น getasfloat (): สตริง;
ฟังก์ชั่น getasmoney (): สตริง;
ฟังก์ชั่น getasinteger (): สตริง;
ฟังก์ชั่น getastext (): สตริง;
ฟังก์ชั่น getAsdate (): สตริง;
ขั้นตอน setasfloat (ค่า const: สตริง);
ขั้นตอน setasmoney (ค่า const: String);
ขั้นตอน setasinteger (ค่า const: สตริง);
ขั้นตอน setastext (ค่า const: สตริง);
ขั้นตอน stylechanged (ผู้ส่ง: tobject);
ขั้นตอน setBackColor (ค่า const: tColor);
ขั้นตอน setColoronenter (ค่า const: tColor);
-
ขั้นตอน doclick (ผู้ส่ง: tobject);
ขั้นตอน doenter (ผู้ส่ง: tobject);
ขั้นตอน doexit (ผู้ส่ง: tobject);
ขั้นตอน dokeypress (ผู้ส่ง: tobject; var key: char);
-
ขั้นตอน setOnClick (ค่า const: tnotifyEvent);
ขั้นตอน setOnkeypress (ค่า const: tkeypressEvent);
ขั้นตอนการตั้งค่า (ค่า const: tnotifyEvent);
ขั้นตอน setonexit (ค่า const: tnotifyEvent);
ได้รับการคุ้มครอง
สีขั้นตอน; แทนที่;
สาธารณะ
ตัวสร้างสร้าง (AOWNER: TCOMPONENT); แทนที่;
Destructor ทำลาย; แทนที่;
ที่ตีพิมพ์
ปากกาทรัพย์สิน: tpen อ่าน fpen เขียน setpen;
แปรงคุณสมบัติ: tbrush อ่าน fbrush เขียน setbrush;
ฟอนต์คุณสมบัติ: tfont อ่าน ffont เขียน setfont;
คำบรรยายภาพคุณสมบัติ: สตริงอ่าน fcaption เขียน setcaption;
คุณสมบัติ BM: สตริงอ่าน fbmtext เขียน setbmtext;
คุณสมบัติ zjf: สตริงอ่าน fzjtext เขียน setzjtext;
คุณสมบัติ MC: สตริงอ่าน fmctext เขียน setmctext;
ข้อความคุณสมบัติ: สตริงอ่าน fmctext เขียน setmctext;
ข้อมูลประเภทคุณสมบัติ: teditDatatype อ่าน fdatatype เขียน setDatatype sdstring เริ่มต้น;
ความแม่นยำของคุณสมบัติ: จำนวนเต็มอ่าน fprecision เขียน setprecision เริ่มต้น 2;
คุณสมบัติอ่านอย่างเดียว: บูลีนอ่าน freadonly เขียน setReadOnly เริ่มต้นเท็จ;
คุณสมบัติ editfont: tfont อ่าน feditfont เขียน seteditfont;
คุณสมบัติ Halignment: Talignment อ่าน fhalignment เขียน sethalignment เริ่มต้น taleftjustify;
การรับรองคุณสมบัติของอสังหาริมทรัพย์: tvalignment อ่าน fvalignment เขียน setValignment เริ่มต้น tvabottomjustify;
Property Titlename: String read ftitlename เขียน settitlename;
Property Tablename: String read ftablename write settablename;
คุณสมบัติ datastyle: tdatastyle อ่าน fdatastyle เขียน setDatastyle เริ่มต้น dsbm;
คุณสมบัติ BMFIELD: สตริงอ่าน fbmfield เขียน setbmfield;
อสังหาริมทรัพย์ zjfield: สตริงอ่าน fzjfield เขียน setzjfield;
Property McField: String อ่าน fmcfield เขียน setmcfield;
คุณสมบัติ asfloat: สตริงอ่าน getasfloat {เขียน setasfloat};
อสังหาริมทรัพย์ Asmoney: String read getasmoney {เขียน setasmoney};
คุณสมบัติ asint: สตริงอ่าน getasinteger {เขียน setasinteger};
คุณสมบัติ asdate: สตริงอ่าน getasdate;
คุณสมบัติ ASSTR: สตริงอ่าน getastext write setastext;
คุณสมบัติ onclick: tnotifyevent อ่าน fonclick เขียน setonclick;
คุณสมบัติ onkeypress: tkeypressevent อ่าน fonkeypress เขียน setonkeypress;
คุณสมบัติ onenter: tnotifyevent อ่าน fonenter write setenterer;
คุณสมบัติ onexit: tnotifyevent อ่าน fonexit เขียน setonexit;
Property Backcolor: TColor เขียน setBackColor;
Property coloronenter: tcolor เขียน setcoloronenter;
อสังหาริมทรัพย์ AlignDisabled;
Property VisibledockClientCount;
Property Controlcount;
ทรัพย์สิน ParentWindow;
การแสดงทรัพย์สิน;
Taborder คุณสมบัติ
Tabstop ทรัพย์สิน;
จบ;
ขั้นตอนการลงทะเบียน;
การดำเนินการ
ใช้ consts;
ขั้นตอน tselectda.setpen (ค่า const: tpen);
เริ่ม
fpen.assign (ค่า);
เป็นโมฆะ;
จบ;
ขั้นตอน tselectda.setbrush (ค่า const: tbrush);
เริ่ม
fbrush.assign (ค่า);
เป็นโมฆะ;
จบ;
ขั้นตอน tselectda.setfont (ค่า const: tfont);
เริ่ม
ffont.assign (ค่า);
เป็นโมฆะ;
จบ;
ขั้นตอน tselectda.setCaption (ค่า const: สตริง);
เริ่ม
ถ้า fcaption <> ค่าแล้ว
เริ่ม
fcaption: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
โพรซีเดอร์ tselectda.setbmtext (ค่า const: สตริง);
เริ่ม
ถ้า fbmtext <> ค่าแล้ว
เริ่ม
fbmtext: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
โพรซีเดอร์ tselectda.setzjtext (ค่า const: สตริง);
เริ่ม
ถ้า fzjtext <> ค่าแล้ว
เริ่ม
fzjtext: = ค่า;
จบ;
จบ;
โพรซีเดอร์ tselectda.setmctext (ค่า const: สตริง);
เริ่ม
ถ้า fmctext <> ค่าแล้ว
เริ่ม
fmctext: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.setReadonly (ค่า const: บูลีน);
เริ่ม
ถ้า freadonly <> ค่าแล้ว
เริ่ม
Freadonly: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.seteditFont (ค่า const: tfont);
เริ่ม
feditfont.assign (ค่า);
เป็นโมฆะ;
จบ;
ขั้นตอน tselectda.setPrecision (ค่า const: จำนวนเต็ม);
เริ่ม
ถ้า fprecision <> ค่าแล้ว
เริ่ม
มูลค่ากรณีของ
1..6: fprecision: = ค่า;
else fprecision: = 2;
จบ;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.setDatatype (ค่า const: teditDatatype);
เริ่ม
ถ้า fdatatype <> ค่าแล้ว
เริ่ม
fdatatype: = ค่า;
กรณี fdatatype ของ
SDSTRING: FEDIT.INPUTSTYLE: = ISSTRING;
Sdinteger: fedit.inputstyle: = isinteger;
sdfloat: fedit.inputstyle: = isfloat;
SDMONEY: FEDIT.INPUTSTYLE: = ISMONEY;
sddate: fedit.inputstyle: = isdate;
else fedit.inputstyle: = isstring;
จบ;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.sethalignment (ค่า const: talignment);
เริ่ม
ถ้า fhalignment <> ค่าแล้ว
เริ่ม
fhalignment: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.setValignment (ค่า const: tvalignment);
เริ่ม
ถ้า fvalignment <> ค่าแล้ว
เริ่ม
fvalignment: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.settitlename (ค่า const: String);
เริ่ม
ถ้า ftitlename <> ค่าจากนั้น ftitlename: = value;
จบ;
ขั้นตอน tselectda.settablename (ค่า const: String);
เริ่ม
ถ้า ftablename <> ค่าแล้ว
เริ่ม
ftablename: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.setDatastyle (ค่า const: tdatastyle);
เริ่ม
ถ้า fdatastyle <> ค่าจากนั้น fdatastyle: = value;
จบ;
ขั้นตอน tselectda.setbmfield (ค่า const: สตริง);
เริ่ม
ถ้า fbmfield <> ค่าแล้ว
เริ่ม
fbmfield: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ขั้นตอน tselectda.setzjfield (ค่า const: สตริง);
เริ่ม
ถ้า fzjfield <> ค่าจากนั้น fzjfield: = value;
จบ;
ขั้นตอน tselectda.setmcfield (ค่า const: สตริง);
เริ่ม
ถ้า fmcfield <> ค่าแล้ว
เริ่ม
fmcfield: = ค่า;
เป็นโมฆะ;
จบ;
จบ;
ฟังก์ชั่น tselectda.getasdate (): สตริง;
วาจา
tempdate: tdatetime;
เริ่ม
ถ้า trystrtodate (fmctext, tempdate) จากนั้นผลลัพธ์: = formatDateTime ('yyyy-mm-dd', tempdate)
ผลลัพธ์อื่น: = '';
จบ;
ฟังก์ชั่น tselectda.getasfloat: String;
ฟังก์ชั่น strtodouble (s: string): double;
เริ่ม
ถ้าไม่ trystrtofloat (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
เริ่ม
case fprecision ของ
1..6: ผลลัพธ์: = formatfloat ('### 0.'+dupestring ('0', fprecision), strtodouble (fmctext));
ผลลัพธ์อื่น: = formatfloat ('### 0.00', strtodouble (fmctext));
จบ;
จบ;
ฟังก์ชั่น tselectda.getasmoney: สตริง;
ฟังก์ชั่น strtodouble (s: string): double;
เริ่ม
ถ้าไม่ trystrtofloat (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
เริ่ม
ผลลัพธ์: = formatfloat ('### 0.00', strtodouble (fmctext));
จบ;
ฟังก์ชั่น tselectda.getasinteger: String;
ฟังก์ชั่น strtointeger (s: string): จำนวนเต็ม;
เริ่ม
ถ้าไม่ trystrtoint (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
เริ่ม
ผลลัพธ์: = inttoStr (strtointeger (fmctext));
จบ;
ฟังก์ชั่น tselectda.getastext: สตริง;
เริ่ม
ผลลัพธ์: = fmctext;
จบ;
ขั้นตอน tselectda.setasfloat (ค่า const: สตริง);
ฟังก์ชั่น strtodouble (s: string): double;
เริ่ม
ถ้าไม่ trystrtofloat (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
วาจา
F: Double;
เริ่ม
f: = strtodouble (ค่า);
case fprecision ของ
1..6:
เริ่ม
f: = roundto (f, -fpecision);
setMcText (formatfloat ('### 0.'+dupestring ('0', fprecision), f));
จบ
อื่น
เริ่ม
F: = Roundto (f, -2);
setMcText (formatfloat ('### 0.00', f));
จบ;
จบ;
จบ;
ขั้นตอน tselectda.setasmoney (ค่า const: String);
ฟังก์ชั่น strtodouble (s: string): double;
เริ่ม
ถ้าไม่ trystrtofloat (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
วาจา
F: Double;
เริ่ม
f: = strtodouble (ค่า);
F: = Roundto (f, -2);
setMcText (formatfloat ('### 0.00', f));
จบ;
โพรซีเดอร์ tselectda.setasinteger (ค่า const: สตริง);
ฟังก์ชั่น strtointeger (s: string): จำนวนเต็ม;
เริ่ม
ถ้าไม่ trystrtoint (s, ผลลัพธ์) จากนั้นผลลัพธ์: = 0;
จบ;
วาจา
ฉัน: จำนวนเต็ม;
เริ่ม
i: = strtointeger (ค่า);
setMcText (inttoStr (i));
จบ;
โพรซีเดอร์ tselectda.setastastext (ค่า const: สตริง);
เริ่ม
setMcText (ค่า);
จบ;
ขั้นตอน tselectda.stylechanged (ผู้ส่ง: tobject);
เริ่ม
เป็นโมฆะ;
จบ;
ขั้นตอน tselectda.setbackColor (ค่า const: tColor);
เริ่ม
fedit.backColor: = ค่า;
จบ;
ขั้นตอน tselectda.setColoronenter (ค่า const: tColor);
เริ่ม
Fedit.Coloronenter: = ค่า;
จบ;
Constructor tselectda.create (AOWNER: TCOMPONENT);
เริ่ม
สืบทอดมาสร้าง (aowner);
ความกว้าง: = 188;
ความสูง: = 20;
fcaption: = '未命名';
fbmtext: = '';
fzjtext: = '';
fmctext: = '';
Freadonly: = false;
fhalignment: = taleftjustify;
fvalignment: = tvAbottomjustify;
fdatatype: = sdstring;
fprecision: = 2;
ftitlename: = '';
ftablename: = '';
fdatastyle: = dsbm;
fbmfield: = '';
fzjfield: = '';
fmcfield: = '';
fpen: = tpen.create;
fpen.onchange: = stylechanged;
fbrush: = tbrush.create;
fbrush.onchange: = stylechanged;
ffont: = tfont.create;
ffont.onchange: = stylechanged;
ffont.charset: = gb2312_charset;
ffont.name:= '宋体';
ffont.size: = 9;
feditfont: = tfont.create;
feditfont.onchange: = stylechanged;
feditfont.charset: = gb2312_charset;
feditfont.name:= '宋体';
feditfont.size: = 9;
fedit: = tstyleedit.create (ตัวเอง);
fedit.parent: = ตัวเอง;
fedit.borderstyle: = bsnone;
fedit.inputstyle: = isstring;
-
fedit.onkeypress: = dokeypress;
fedit.onenter: = doenter;
fedit.onexit: = doexit;
-
fbutton: = tflatbutton.create (ตัวเอง);
fbutton.parent: = self;
fbutton.font: = ffont;
fbutton.colorborder: = fbrush.color;
fbutton.color: = fbrush.color;
fbutton.colordown: = fbrush.color;
fbutton.colorshadow: = fbrush.color;
fbutton.colorfocused: = fbrush.color;
fbutton.width: = 19;
fbutton.caption: = '…';
-
fbutton.onclick: = doclick;
-
จบ;
ขั้นตอน tselectda.paint;
วาจา
atext: pchar;
Arect: Trect;
ธง: DWORD;
เริ่ม
ด้วยผ้าใบทำ
เริ่ม
ตัวอักษร: = ffont;
ปากกา: = fpen;
แปรง: = fbrush;
Fillrect (clientRect);
ถ้า fbmtext <> '' atext: = pchar (fcaption+'['+fbmtext+']') อื่น atext: = pchar (fcaption);
arect: = rect (clientrect.left+fpen.width, clientRect.top+fpen.width, clientRect.right-fpen.width, clientRect.bottom-fpen.width);
drawtext (handle, atext, strlen (atext), arect, (dt_singleline หรือ dt_vcenter) หรือ dt_left);
inc (arect.left, textwidth (atext));
ธ.ค. (arect.right, fbutton.width);
moveto (arect.left, arect.bottom);
lineto (arect.right, arect.bottom);
inc (arect.left, fpen.width);
ถ้า Freadonly แล้ว
เริ่ม
fedit.visible: = false;
fbutton.visible: = false;
ธง: = dt_singleline;
กรณี fhalignment ของ
Taleftjustify: Flag: = Flag หรือ Dt_Left;
tarightjustify: Flag: = Flag หรือ Dt_right;
Tacenter: Flag: = Flag หรือ Dt_Center;
ธงอื่น: = ธงหรือ dt_left;
จบ;
กรณี fvalignment ของ
TVATOPJUSTIFY: FLAG: = FLAG หรือ DT_TOP;
TVAcenter: Flag: = Flag หรือ DT_VCenter;
TVABOTTOMJUSTIFY: FLAG: = FLAG หรือ DT_BOTTOM;
ธงอื่น: = ธงหรือ dt_bottom;
จบ;
แบบอักษร: = FeditFont;
กรณี fdatatype ของ
SDSTRING: DrawText (Handle, PCHAR (ASSTR), Strlen (PCHAR (ASSTR)), ARECT, FLAG);
Sdinteger: drawtext (handle, pchar (asint), strlen (pchar (asint)), arect, flag);
sdfloat: drawtext (handle, pchar (asfloat), strlen (pchar (asfloat)), arect, ธง);
SDMONEY: DrawText (Handle, Pchar (Asmoney), Strlen (Pchar (Asmoney)), ARECT, FLAG);
sddate: drawtext (handle, pchar (asdate), strlen (pchar (asdate)), arect, flag);
จบ;
จบ
อื่น
เริ่ม
Fedit.Alignment: = fhalignment;
fedit.font: = feditfont;
fedit.text: = fmctext;
fedit.width: = arect.right-arect.left;
fedit.height: = min (max (textheight (fmctext), textheight (fcaption)), arect.bottom-arect.top);
fedit.left: = arect.left;
กรณี fvalignment ของ
tvatopjustify: fedit.top: = arect.top;
tvacenter: fedit.top: = arect.top+(arect.bottom-arect.top-fedit.height) Div 2;
tvabottomjustify: fedit.top: = arect.top+(arect.bottom-arect.top-fedit.height);
else fedit.top:=arect.top;
จบ;
fbutton.left: = arect.right;
fbutton.top:=arect.top;
fbutton.height: = arect.bottom-arect.top;
if ((fdatatype = sdstring) และ (fbmfield <> '') และ (fmcfield <> '') และ (ftablename <> ''))
หรือ (fdatatype = sddate) จากนั้น fbutton.visible: = true
else fbutton.visible: = false;
จบ;
จบ;
จบ;
destructor tselectda.destroy;
เริ่ม
fpen.free;
fbrush.free;
ffont.free;
feditfont.free;
หากได้รับมอบหมาย (fedit) แล้ว Freeandnil (Fedit);
ถ้าได้รับมอบหมาย (fbutton) จากนั้น Freeandnil (fbutton);
ทำลายที่สืบทอดมา;
จบ;
-
ขั้นตอน tselectda.doclick (ผู้ส่ง: tobject);
เริ่ม
ถ้าได้รับมอบหมาย (fonclick) จากนั้น fonclick (ตัวเอง);
จบ;
ขั้นตอน tselectda.doenter (ผู้ส่ง: tobject);
เริ่ม
หากได้รับมอบหมาย (fonenter) จากนั้น fonginer (ตัวเอง);
จบ;
ขั้นตอน tselectda.doexit (ผู้ส่ง: tobject);
เริ่ม
ถ้าได้รับมอบหมาย (fonexit) จากนั้น fonexit (ตัวเอง);
จบ;
ขั้นตอน tselectda.dokeypress (ผู้ส่ง: tobject; var key: char);
เริ่ม
หากได้รับมอบหมาย (fonkeypress) จากนั้น fonkeypress (ตัวเอง, คีย์);
จบ;
-
ขั้นตอน tselectda.setonclick (ค่า const: tnotifyevent);
เริ่ม
ถ้า @fonclick <> @value แล้ว
เริ่ม
fonclick: = ค่า;
fbutton.onclick: = fonclick;
จบ;
จบ;
ขั้นตอน tselectda.setonkeypress (ค่า const: tkeypressevent);
เริ่ม
ถ้า @fonkeypress <> @value แล้ว
เริ่ม
fonkeypress: = ค่า;
fedit.onkeypress: = fonkeypress;
จบ;
จบ;
โพรซีเดอร์ tselectda.setonenter (ค่า const: tnotifyevent);
เริ่ม
ถ้า @fonenter <> @value แล้ว
เริ่ม
fonenter: = ค่า;
fedit.onenter: = fonenter;
จบ;
จบ;
ขั้นตอน tselectda.setonexit (ค่า const: tnotifyevent);
เริ่ม
ถ้า @fonexit <> @value แล้ว
เริ่ม
Fonexit: = ค่า;
fedit.onexit: = fonexit;
จบ;
จบ;
ขั้นตอนการลงทะเบียน;
เริ่ม
registercomponents ('swlmsoft', [tselectda]);
จบ;
จบ.