P> 증권 분석 소프트웨어를 개발하려면 다양한 주식에 대한 분석 곡선을 도출해야합니다. 소프트웨어 기능을보다 편리하고 유연하게 만들기 위해 사용자는 자신의 선호도에 따라 다양한 곡선의 색상을 사용자 정의 할 수 있기를 희망합니다. Word97의 [형식] 메뉴 아래 글꼴 대화 상자에 비슷한 기능이 있습니다. 사용자가 글꼴 대화 상자에서 컬러 드롭 다운 상자를 클릭하면 다양한 색상의 간단한 패턴이 글꼴의 색상 이름과 함께 표시됩니다. 색상 이름으로. 1. 사용자 정의 컬러 대화 상자 구현
델파이에서는 tcombobox를 사용하여 유사한 기능을 달성 할 수 있습니다. tcombobox 구성 요소에는 tcombobox의 디스플레이 속성을 결정하는 스타일 속성이 있습니다. 일반적으로 CSDROPDOWN, CSSIMPLE, CSDROPDOWNLIST, CSOWNERDRADFIXED, CSOWNERDRADVARIBLE 등을 선택할 수 있습니다. CSOWNERDRADFIXED가 선택되면 드롭 다운 상자의 각 항목의 높이를 자체적으로 드롭 다운 상자를 만들 수 있습니다. 그리고 자체 페인팅 프로세스는 tcombobox의 OnDrawItem 이벤트에서 응답해야합니다. ondrawitem은 다음과 같이 정의됩니다.
PropertyOndRawitem : tdrawitemevent;
tdrawitemevent = procedure (Control : TwinControl; index : integerrect : trect; state : townerDrawState) ofobject;
세 매개 변수의 의미는 다음과 같습니다.
제어 : 드롭 다운 박스를 포함하는 tcombobox
인덱스 : Tcombobox의 항목 속성에서 자체 그레이브 드롭 다운 상자의 인덱스 번호
rect : 자기 주도의 위치 따라서, 우리는 자체 주목 해야하는 사각형의 위치와 tcombobox의 인덱스 번호 (인덱스 매개 변수)를 알고 있습니다. tcombobox의 캔버스 속성을 사용하여 그것의 캔버스. 특정 구현 프로세스는 다음과 같습니다.
1. 새 프로젝트 파일을 작성하고 기본 형식의 관련 속성을 다음과 같이 설정하십시오.
캡션 사용자 정의 드롭 다운 상자
이름 form1
PositionScreencenter
2. 두 개의 tcombobox 구성 요소를 양식에 배치하고 속성을 다음과 같이 설정하십시오.
namestyleitemheightondrawitem
Colorcombo1csowner drawfixed 20colorcombodrawitem
Colorcombo2csowner drawfixed 30colorcombodrawitem
3. ColorCombo1 및 ColorCombo2의 항목 속성 옆에 도트 버튼을 두 번 클릭하고 StringListEditor 대화 상자에 입력하십시오.
검은색
파란색
파란색과 녹색
밝은 녹색
빨간색
노란색
다양한 색상의 이름
4. Colorcombo1의 ondrawitem 이벤트에서, yu manlu?
ProcessEretform1.colorcombodrawitem (Control : TwinControl; index : Indeger; rect : trect; state : 소유자 drawState);
var
TempColor : tcolor;
Tempbrushcolor : tcolor;
시작하다
(Controlastcombobox)와 함께
// 콤보의 캔버스에 그립니다
시작하다
tempbrushcolor : = canvas.brush.color;
// 원래 색상을 저장합니다
canvas.fillRect (rect);
CaseIndexof // 인덱스에 따라 다른 자체 페인트 색상을 정의합니다
0 : // 검은 색
TempColor : = Clblack;
1 : // 파란색
템플 러 : = 클럽;
2 : // 파란색과 녹색
템플 러 : = Claqua;
3 : // 밝은 녹색
온도 : = cllime;
4 : // 빨간색
TempColor : = Clred;
5 : // 노란색
TempColor : = Clyellow;
// 다른 색상에 대한 응답은 여기에 추가 할 수 있습니다.
끝;
canvas.brush.color : = tempcolor;
//자가 그린 색상 사각형
canvas.rectangle (rect.left+4,
rect.top+1,
(rect.right+rect.left) div3,
rect.bottom 1);
canvas.brush.color : = tempbrushcolor;
// 색상에 해당하는 문자열을 표시합니다
canvas.textout ((rect.left+rect.right) div2,
rect.top+1,
항목 [index]);
끝;
끝;
5. 파일을 저장하고 실행하면 Word의 색상 드롭 다운 상자와 동일한 효과를 볼 수 있습니다.
관심있는 독자는 기사에 표시된 위치에 다른 색상을 추가 할 수 있습니다.
위의 프로그램은 delphi3.0, 4.0에서 전달됩니다. 2. 사용자 지정 색상 대화 상자 구성 요소를 작성하십시오
많은 Delphi 프로그래머의 경우 Delphi 구성 요소를 작성하는 방법에 매우 익숙하지 않습니다. 아래에서는 사용자 정의 컬러 대화 상자를 사용하여 구성 요소 작성을 예로 들어 소개합니다. 다음 tcolorcombobox는 오른쪽의 드롭 다운 화살표를 클릭하면 해당 드롭 다운 항목의 다양한 색상이 나타납니다. 1. 구성 요소 메뉴 항목에서 새 구성 요소 옵션을 선택하십시오. Ancestortype 상자에서 tcombobox를 선택하고 Classname 상자에서 tcolorcombobox를 채우고 팔레트 페이지 상자에서 샘플을 선택한 다음 Unitfilename 상자에서 Colorcombobox.pas를 채우고 확인 버튼을 클릭하십시오.
2. 구성 요소 메뉴 항목에서 구성 요소 옵션을 선택하고 intonewpackage를 클릭하고 패키지 이름 상자에 경로 및 Colorcombodpk.dpk를 쓰고 확인을 클릭하여 Colorcombodpk.bpl 파일을 생성합니다.
3. 도구 메뉴에서 ImageEditor를 사용하여 파일 편집 colorcombox.dcr을 만들고 tcolorcombobox 클래스에 대한 비트 맵을 만듭니다.
4. 글꼴 크기와 높이에 대한 사양과 CREATEWND에서 컨트롤 스타일 속성 (CSOWNERDRADFIXED로 설정)을 추가하여 많은 색상 항목이 필요하지 않은 경우 컨트롤 항목을 직접 삭제할 수 있습니다 그림 물감.
5. Drawitem에서 발생하는 DrawItem 이벤트에 컬러 셀프 페인팅 프로그램을 추가하십시오.
구현 절차는 다음과 같습니다.
UnitcolorcomboBox;
인터페이스
용도
창, 메시지, sysutils, 클래스,
그래픽, 컨트롤, 양식, 대화,
stdctrls;
유형
tcolorcombobox = class (tcombobox)
사적인
{privatedeclarations}
fondrawitem : tdrawitemevent;
ProcedEdRawitem (Index : Integer; rect : trect; State : TownerDrawState);
보호
{ProtectedDeclarations}
공공의
{publicdeclarations}
ConstructorCreate (Aowner : tcomponent); 재정의;
ProcessEcreateWnd; 재정의;
게시
{publishedDeclarations}
PropertyOndRawitem : tdrawitemevent
readFondRawitemWriteFondRawitem;
끝;
절차 보충제;
구현
Procedureergister; // 등록 구성 요소
시작하다
RegisterComponents (샘플, [tcolorcombobox]);
끝;
ConstructortColorcomboBox.create
(aowner : tcomponent); // 구성 요소의 초기화
시작하다
상속 된 크리징 (AOWNER);
스타일 : = csowner drawfixed; // 초기 구성 요소
ItemHeight : = 20;
font.size : = 10;
끝;
ProcessEtColorComBobox.CreateWnd;
// 색상 구성 요소의 항목 속성을 초기화합니다
시작하다
상속 된 크리치 토프;
항목.
항목 .add (검은 색);
항목 .add (파란색);
항목 .add (파란색과 녹색);
항목 .add (밝은 녹색);
항목 .add (분홍색);
항목 .add (빨간색);
항목 .add (노란색);
항목 .add (흰색);
항목 .add (진한 파란색);
항목 (시안);
항목 .add (녹색);
항목 .add (보라색);
항목 .add (크림슨 레드);
항목 .add (깊은 노란색);
항목 .add (진한 회색);
항목 .add (은);
// 색상이 너무 많지 않으면 구성 요소의 항목 속성에서 원치 않는 색상을 삭제할 수 있습니다.
끝;
// DrawItem 프로세스를 과부하합니다
ProcessEtColorComboBox.DrawItem (색인 : 정수; rect : trect; state : townerDrawState);
var
TempColor : tcolor;
Tempbrushcolor : tcolor;
시작하다
//이 구성 요소의 기본 셀프 페인팅 설정입니다
tempbrushcolor : = canvas.brush.color;
// 원래 색상을 저장합니다
canvas.fillRect (rect);
ifitems [index] = 검은 색입니다
TempColor : = Clblack
elseifitems [index] = 파란색
TempColor : = Clblue
elseifitems [index] = Blue Green
템플 러 : = 클라크
elseifitems [index] = 밝은 녹색
TempColor : = Cllime
elseifitems [index] = 핑크
템플 러 : = clfuchsia
elseifitems [index] = 빨간색
TempColor : = Clred
elseifitems [index] = 노란색
TempColor : = Clyellow
elseifitems [index] = 화이트
템플러 : = Clwhite
elseifitems [index] = 진한 파란색
TempColor : = Clnavy
elseifitems [index] = 시안
TempColor : = Clteal
elseifitems [index] = 녹색
TempColor : = Clgreen
elseifitems [index] = 보라색
TempColor : = Clpurple
elseifitems [index] = 크림슨
TempColor : = Clmaroon
elseifitems [index] = 깊은 노란색
TempColor : = Clolive
elseifitems [index] = 짙은 회색입니다
TempColor : = Clgray
elseifitems [index] =은
ELSETEMPCOLOR : = Clsilver;
canvas.brush.color : = tempcolor;
//자가 그린 색상 사각형
canvas.rectangle (rect.left+4,
rect.top+1,
(rect.right+rect.left) div3,
rect.bottom 1);
canvas.brush.color : = tempbrushcolor;
// 색상에 해당하는 문자열을 표시합니다
canvas.textout ((rect.left+rect.right) div2,
rect.top+1,
항목 [index]);
끝;
이 컨트롤은 색상 옵션이 필요한 모든 프로그램에서 사용될 수 있으며 매우 편리하고 아름답고 많은 시간을 프로그래밍하고 프로그램 신뢰성과 가독성을 향상시킵니다. 3. 사용자 정의 컬러 대화 상자 구성 요소 사용
사용자 정의 색상 구성 요소를 등록한 후 Delphi 구성 요소 템플릿의 샘플 페이지에서 사용자 정의 색상 구성 요소를 선택할 수 있으며 Delphi의 자체 구성 요소 사용 간에는 차이가 없습니다.