USWLMSLECTDA 장치;
{$ s-, w-, r-}
{$ c Preload}
인터페이스
용도
창, 메시지, 시스템, 유형, 클래스, 그래픽, 컨트롤, stdctrls, 양식,
Strutils, Math, Adodb, tflatbuttonunit, uswlmstyleedit;
유형
teditdatatype = (sdstring, sdinteger, sdfloat, sdmoney, sddate);
tvalignment = (tvatopjustify, tvacenter, tvababottomjustify);
tdatastyle = (dsbm, dszj, dsmc);
유형
tselectda = class (tcustomControl)
사적인
fpen : tpen;
fbrush : tbrush;
ffont : tfont;
fcaption : 문자열;
fbmtext : 문자열;
fzjtext : 문자열;
fmctext : 문자열;
FDATATYPE : TEDITDATATYPE;
fprecision : 정수;
Freadonly : 부울;
Feditfont : tfont;
fhalignment : talignment;
fvalignment : tvalignment;
Fedit : tstyleedit;
fbutton : tflatbutton;
ftitlename : 문자열;
ftablename : 문자열;
Fdatastyle : Tdatastyle;
fbmfield : 문자열;
fzjfield : 문자열;
fmcfield : 문자열;
fonclick : tnotifyevent;
FONTERER : tnotifyevent;
fonexit : tnotifyevent;
Fonkeypress : Tkeypressevent;
절차 setpen (const 값 : tpen);
절차 setBrush (const value : tbrush);
절차 setfont (const value : tfont);
절차 setcaption (const 값 : 문자열);
절차 setBmtext (const value : String);
절차 setzjtext (const value : String);
절차 setMcText (const value : String);
절차 setDatatype (const value : teditdatatype);
절차 setPrecision (const value : Integer);
절차 setReadOnly (const value : boolean);
절차 seteditfont (const value : tfont);
절차 사분식 (const value : talignment);
절차 setValignment (const value : tvalignment);
절차 settitLename (const value : String);
절차 settableName (const value : String);
절차 setDatastyle (const value : tdatastyle);
절차 setbmfield (const value : String);
절차 setzjfield (const value : String);
절차 setMcfield (const 값 : 문자열);
함수 getAsfloat () : 문자열;
함수 getasmoney () : 문자열;
함수 getAsinteger () : 문자열;
function getTasext () : String;
함수 getAsDate () : 문자열;
절차 setAsfloat (const 값 : String);
절차 setasmoney (const value : String);
절차 setAsinteger (const 값 : String);
절차 settasext (const value : String);
프로 시저 스타일 리그닝 (Sender : Tobject);
절차 wetbackColor (const value : tcolor);
절차 setColoronterner (const value : tcolor);
{
절차 doclick (sender : tobject);
절차 doenter (sender : tobject);
절차 doexit (발신자 : tobject);
프로 시저 Dokeypress (발신자 : Tobject; var 키 : char);
}
절차 setOnclick (const 값 : tnotifyevent);
절차 setonKeypress (const 값 : tkeypressevent);
절차 설정자 (const value : tnotifyevent);
절차 setOnexit (const 값 : tnotifyevent);
보호
절차 페인트; 보수;
공공의
생성자 생성 (aowner : tcomponent); 보수;
소멸자 파괴; 보수;
게시
속성 펜 : tpen 읽기 fpen 쓰기 세트 펜;
속성 브러시 : tbrush 읽기 fbrush write setbrush;
속성 글꼴 : TFONT 읽기 FFONT WRITE SETFONT;
속성 캡션 : 문자열 읽기 fcaption write setcaption;
속성 BM : 문자열 읽기 fbmtext write setbmtext;
속성 zjf : 문자열 읽기 fzjtext write setzjtext;
속성 MC : 문자열 읽기 fmctext write setmctext;
속성 텍스트 : 문자열 읽기 fmctext write setmctext;
속성 데이터 유형 : TeditDatatype 읽기 FDATATYPE WRITE SETDATATYPE DEFAULT SDSTRING;
속성 정밀 : 정수 읽기 FPRECISION WRITE SETPRECISION DEFAULT 2;
속성 Readonly : 부울 읽기 freadonly write setReadOnly default false;
속성 editfont : tfont 읽기 FeditFont write seteditfont;
속성 조지 : talignment 읽기 fhalignment 쓰기 setalignment default taleftjustify;
속성 Valignment : tvalignment 읽기 fvalignment write setValignment default tvabottomjustify;
속성 titlename : 문자열 읽기 ftitlename write settitlename;
속성 표정 : 문자열 읽기 ftablename write settableName;
속성 DataStyle : tdatastyle 읽기 fdatastyle 쓰기 setDatastyle 기본 dsbm;
속성 Bmfield : 문자열 읽기 fbmfield write setbmfield;
속성 Zjfield : 문자열 읽기 Fzjfield 쓰기 Setzjfield;
Property McField : 문자열 읽기 FMCFIELD WRITE SETMCFIELD;
속성 asfloat : 문자열 읽기 getAsfloat {write setasfloat};
속성 Asmoney : 문자열 읽기 getasmoney {write setasmoney};
속성 ASINT : 문자열 읽기 getAsinteger {write setasinteger};
속성 ASDATE : 문자열 읽기 GetAsDate;
속성 astr : 문자열 읽기 getastext write settasext;
속성 onclick : tnotifyevent 읽기 fonclick write setonclick;
속성 onkeypress : tkeypressevent 읽기 Fonkeypress 쓰기 setonkeypress;
속성 onenter : tnotifyevent 읽기 세제자 작성자;
속성 ONEXIT : tnotifyEvent 읽기 fonexit write setOnexit;
Property BackColor : Tcolor Write SetbackColor;
속성 채색 자 : tcolor write setColoronenter;
속성 조정 장애;
속성 visibledockclientCount;
속성 관리 카운트;
부동산 상위 의식;
속성 표시;
속성 태도;
속성 Tabstop;
끝;
절차 레지스터;
구현
성자를 사용합니다.
절차 tselectda.setpen (const 값 : tpen);
시작하다
fpen.assign (값);
무효화;
끝;
절차 tselectda.setBrush (const value : tbrush);
시작하다
fbrush.assign (value);
무효화;
끝;
절차 tselectda.setfont (const value : tfont);
시작하다
ffont.assign (값);
무효화;
끝;
절차 tselectda.setcaption (const value : String);
시작하다
fcaption <> 값이라면
시작하다
fcaption : = 값;
무효화;
끝;
끝;
절차 tselectda.setbmtext (const value : String);
시작하다
fbmtext <> value라면
시작하다
fbmtext : = value;
무효화;
끝;
끝;
절차 tselectda.setzjtext (const value : String);
시작하다
fzjtext <> value라면
시작하다
fzjtext : = value;
끝;
끝;
절차 tselectda.setmctext (const value : String);
시작하다
fmctext <> value라면
시작하다
fmctext : = 값;
무효화;
끝;
끝;
절차 tselectda.setReadOnly (const value : boolean);
시작하다
Freadonly <> 가치가 있다면
시작하다
Freadonly : = 값;
무효화;
끝;
끝;
절차 tselectda.seteditfont (const value : tfont);
시작하다
FeditFont.Assign (값);
무효화;
끝;
절차 tselectda.setprecision (const value : Integer);
시작하다
fprecision <> 값이라면
시작하다
사례 가치
1..6 : fprecision : = 값;
else fprecision : = 2;
끝;
무효화;
끝;
끝;
프로 시저 tselectda.setdatatype (const value : teditdataType);
시작하다
FDATATYPE <> 값이면
시작하다
fdatatype : = value;
CASE 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 value : talignment);
시작하다
fhalignment <> value라면
시작하다
fhalignment : = 값;
무효화;
끝;
끝;
절차 tselectda.setValignment (const value : tvalignment);
시작하다
fvalignment <> value라면
시작하다
fvalignment : = 값;
무효화;
끝;
끝;
절차 tselectda.settitlename (const value : String);
시작하다
ftitlename <> 값이면 ftitlename : = value;
끝;
프로 시저 tselectda.settablename (const value : string);
시작하다
ftablename <> 값이라면
시작하다
ftablename : = value;
무효화;
끝;
끝;
절차 tselectda.setDatastyle (const value : tdatastyle);
시작하다
fdatastyle <> 값이라면 fdatastyle : = value;
끝;
절차 tselectda.setbmfield (const value : String);
시작하다
fbmfield <> 가치가 있다면
시작하다
fbmfield : = 값;
무효화;
끝;
끝;
절차 tselectda.setzjfield (const value : String);
시작하다
fzjfield <> 값이라면 fzjfield : = value;
끝;
절차 tselectda.setmcfield (const value : String);
시작하다
fmcfield <> 값이라면
시작하다
fmcfield : = 값;
무효화;
끝;
끝;
함수 tselectda.getAsdate () : 문자열;
var
Tempdate : tdateTime;
시작하다
trystrtodate (fmctext, tempdate) 인 경우 결과 : = FormatDateTime ( 'yyyy-mm-dd', tempdate)
다른 결과 : = '';
끝;
함수 tselectda.getAsfloat : 문자열;
함수 strtodouble (s : string) : 이중;
시작하다
trystrtofloat (s, result)가 아닌 경우 결과 : = 0;
끝;
시작하다
사례 frecision
1..6 : 결과 : = FormatFloat ( '### 0.'+dupestring ( '0', fprecision), strtodouble (fmctext));
다른 결과 : = Formatfloat ( '### 0.00', strtodouble (fmctext));
끝;
끝;
함수 tselectda.getasmoney : 문자열;
함수 strtodouble (s : string) : 이중;
시작하다
trystrtofloat (s, result)가 아닌 경우 결과 : = 0;
끝;
시작하다
결과 : = FormatFloat ( '### 0.00', strtodouble (fmctext));
끝;
함수 tselectda.getAsinteger : 문자열;
함수 strtointeger (s : string) : 정수;
시작하다
trystrtoint (s, result)가 아닌 경우 결과 : = 0;
끝;
시작하다
결과 : = inttostr (strtointeger (fmctext));
끝;
함수 tselectda.getastext : String;
시작하다
결과 : = fmctext;
끝;
절차 tselectda.setAsfloat (const 값 : 문자열);
함수 strtodouble (s : string) : 이중;
시작하다
trystrtofloat (s, result)가 아닌 경우 결과 : = 0;
끝;
var
F : 더블;
시작하다
f : = strtodouble (값);
사례 frecision
1..6 :
시작하다
f : = Roundto (f, -fprecision);
setMcText (formatfloat ( '### 0.'+dupestring ( '0', fprecision), f));
끝
또 다른
시작하다
F : = Roundto (F, -2);
setMcText (formatfloat ( '### 0.00', f));
끝;
끝;
끝;
절차 tselectda.setasmoney (const value : String);
함수 strtodouble (s : string) : 이중;
시작하다
trystrtofloat (s, result)가 아닌 경우 결과 : = 0;
끝;
var
F : 더블;
시작하다
f : = strtodouble (값);
F : = Roundto (F, -2);
setMcText (formatfloat ( '### 0.00', f));
끝;
절차 tselectda.setAsinteger (const value : String);
함수 strtointeger (s : string) : 정수;
시작하다
trystrtoint (s, result)가 아닌 경우 결과 : = 0;
끝;
var
I : 정수;
시작하다
I : = Strtointeger (값);
setMcText (inttoStr (i));
끝;
절차 tselectda.setastext (const value : String);
시작하다
setMcText (값);
끝;
절차 tselectda.styleechanged (sender : tobject);
시작하다
무효화;
끝;
절차 tselectda.setbackcolor (const value : tcolor);
시작하다
Fedit.backColor : = 값;
끝;
절차 tselectda.setColorOnterer (const value : tcolor);
시작하다
Fedit.colororentter : = value;
끝;
생성자 tselectda.create (aowner : tcomponent);
시작하다
상속 된 Create (Aowner);
너비 : = 188;
높이 : = 20;
fcaption : = '未命名';
fbmtext : = '';
fzjtext : = '';
fmctext : = '';
Freadonly : = 거짓;
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 (self);
Fedit.parent : = 자기;
Fedit.borderstyle : = bsnone;
Fedit.inputStyle : = IsString;
{
Fedit.onkeypress : = Dokeypress;
Fedit.onterer : = doenter;
Fedit.onexit : = doexit;
}
fbutton : = tflatbutton.create (self);
fbutton.parent : = 자기;
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;
var
Atext : PCHA;
절도 : 트렉;
깃발 : dword;
시작하다
캔버스와 함께
시작하다
글꼴 : = ffont;
펜 : = fpen;
브러시 : = fbrush;
FillEct (ClientRect);
fbmtext <> ''인 경우 atext : = pchar (fcaption+'['+fbmtext+']') else atext : = pchar (fcaption);
arect : = rect (clientRect.left+fpen.width, clientRect.Top+fpen.width, clientRect.right-fpen.width, clientRect.Bottom-fpen.width);
DrawText (핸들, atext, strlen (atext), arect, (dt_singleline 또는 dt_vcenter) 또는 dt_left);
inc (arect.left, textWidth (atext));
Dec (arect.right, fbutton.width);
moveto (arect.left, arect.bottom);
Lineto (arect.right, arect.bottom);
Inc (arect.left, fpen.width);
그렇다면 그럼에도 불구하고
시작하다
Fedit.visible : = false;
fbutton.visible : = false;
플래그 : = dt_singLeline;
사례 fhalignment
TaleftJustify : 플래그 : = 플래그 또는 dt_left;
TarightJustify : 플래그 : = 플래그 또는 dt_right;
TACENTER : FLAG : = 플래그 또는 DT_CENTER;
else flag : = 플래그 또는 dt_left;
끝;
사례 fvalignment
tvatopjustify : flag : = 플래그 또는 dt_top;
tvacenter : flag : = 플래그 또는 dt_vcenter;
TVABOTTOMJUSTIFY : 플래그 : = 플래그 또는 DT_BOTTOM;
그렇지 않으면 플래그 : = 플래그 또는 dt_bottom;
끝;
글꼴 : = Feditfont;
CASE FDATATYPE의
SDSTRING : DrawText (핸들, PCHR (Asstr), Strlen (PCHAR (ASSTR)), ARECT, FLAG);
SDINTEGER : DrawText (핸들, PCHAR (ASINT), Strlen (PCHAR (ASINT)), ARECT, FLAG);
sdfloat : drawText (핸들, PCHAR (ASFLOAT), Strlen (PCHAR (Asfloat)), 절개, 플래그);
sdmoney : drawText (핸들, PCHAR (Asmoney), Strlen (PCHAR (Asmoney)), 절개, 플래그);
SDDATE : DrawText (핸들, 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 (self);
끝;
절차 tselectda.doenter (sender : tobject);
시작하다
할당 된 경우 (Fononterer) FONTERER (self);
끝;
절차 tselectda.doexit (sender : tobject);
시작하다
할당 된 경우 (fonexit) fonexit (self);
끝;
절차 tselectda.dokeypress (발신자 : tobject; var key : char);
시작하다
할당 된 경우 (Fonkeypress) Fonkeypress (Self, Key);
끝;
}
절차 tselectda.setonclick (const 값 : tnotifyevent);
시작하다
@fonclick <> @value라면
시작하다
fonclick : = 값;
fbutton.onclick : = fonclick;
끝;
끝;
절차 tselectda.setonkeypress (const 값 : tkeypressevent);
시작하다
@fonkeypress <> @value라면
시작하다
Fonkeypress : = 값;
Fedit.onkeypress : = Fonkeypress;
끝;
끝;
절차 tselectda.setentor (const value : tnotifyevent);
시작하다
@fonenter <> @value라면
시작하다
FONTERER : = value;
Fedit.Onioner : = FONTERER;
끝;
끝;
절차 tselectda.setonexit (const 값 : tnotifyevent);
시작하다
@fonexit <> @value라면
시작하다
fonexit : = 값;
Fedit.onexit : = fonexit;
끝;
끝;
절차 레지스터;
시작하다
registercomponents ( 'swlmsoft', [tselectda]);
끝;
끝.