Delphi에서 컨트롤을 작성하는 기본 방법
Delphi 프로그래머로서 프로그래밍 수준을 더욱 향상시키려면 컨트롤 작성 방법을 마스터해야 합니다. 이 기사에서는 간단한 예제를 통해 초보자를 위한 컨트롤 작성의 몇 가지 기본 방법과 패턴을 소개합니다.
이 예제 컨트롤은 TLeiLabel이라고 하며 TLabel을 기반으로 두 가지 실용적인 기능을 추가합니다. 하나는 텍스트를 3차원 모양으로 만드는 것이고, 다른 하나는 텍스트에 하이퍼링크 속성을 갖도록 만드는 것입니다. 이러한 기능을 단계별로 구현해 보겠습니다.
1. 텍스트를 입체적인 모양으로 만듭니다.
먼저 T3DEffect 유형과 Style3D 속성을 다음과 같이 정의합니다.
T3DEffect=(보통, 높임, 낮춤, 그림자);
PROperty Style3D:T3DEffect 읽기 FStyle3D 쓰기 SetStyle3D 기본값 보통;
그런 다음 "FStyle3D:T3DEffect;"라는 변수를 정의하고 SetStyle3D() 메서드를 다음과 같이 설정합니다. 이는 메서드 작성을 위한 일반적인 형식이기도 합니다.
절차 TLeiLabel.SetStyle3D(값: T3DEffect);
시작하다
FStyle3D <> 값이면
시작하다
FStyle3D := 값;
무효화; //컨트롤이 다시 그려질 것임을 나타냅니다.
끝;
끝;
또한 그림자가 있는 텍스트의 경우 그림자의 오프셋인 ShadeXOffSet 및 ShadeYOffSet를 정의해야 합니다.
속성 ShadowXOffSet: 정수 읽기 FXOffSet 쓰기 SetFXOffSet 기본값 5;
속성 ShadowYOffSet: 정수 읽기 FYOffSet 쓰기 SetFYOffSet 기본값 -5;
쓰기 방법 SetFXOffSet() 및 SetFYOffSet()는 위의 SetStyle3D()와 유사합니다.
컨트롤을 다시 그리려면 일반적으로 Paint 메서드를 오버로드해야 합니다. 여기서는 DoDrawText 메서드만 오버로드하면 됩니다.
DoDrawText 선언은 Protected에 배치됩니다.
절차 DoDrawText(var Rect: TRect; 플래그: Longint);
여기서 DoDrawText()는 네 가지 유형(보통, 볼록, 오목 및 그림자)에 따라 다양한 텍스트를 그립니다.
2. 텍스트에 하이퍼링크 속성을 부여하세요
연결할 URL 또는 이메일 주소를 나타내는 속성 URL을 정의합니다.
속성 URL: 문자열 읽기 FURL 쓰기 SetURL;
다음과 같이 SetURL 메서드를 작성합니다.
절차 TLeiLabel.SetURL(값: 문자열);
시작하다
if FURL <> 값 then FURL := Value ;
만약 FURL <> '이면
커서 := crHandPoint;
끝;
이 레이블을 클릭하면 브라우저나 메일 보내기 및 받기 도구를 열어야 하며, 이를 위해서는 Click 메서드를 오버로드해야 합니다.
절차 재정의;
절차 TLeiLabel.Click;
var s: 문자열;
시작하다
상속된 클릭;
FURL = '이면 종료합니다.
LowerCase(Copy(FURL,1,7)) = 'http://'이면
s := FURL
else if Pos('@',FURL) <> 0 그러면
s := 'mailto:' + FURL
또 다른
s := 'http://' + FURL;
ShellExecute(application.Handle, 'open', PChar(s), NIL, NIL, SW_SHOWNORMAL);
끝;
일반 하이퍼링크의 경우 마우스를 이동하면 텍스트 색상이 변경됩니다. 이를 위해 마우스가 움직일 때 텍스트의 색상을 나타내는 HoverColor 속성을 추가합니다.
속성 HoverColor : TColor 읽기 FHoverColor 쓰기 SetHoverColor 기본값 clRed;
또한 Windows 메시지 CM_MOUSEENTER 및 CM_MOUSELEAVE(마우스 입력 및 마우스 출력)를 수신하는 두 가지 프로시저를 정의합니다.
절차 CMMouseEnter(var 메시지: TMessage) 메시지 CM_MOUSEENTER;
프로시저 CMMouseLeave(var 메시지: TMessage); 메시지 CM_MOUSELEAVE;
프로시저 TLeiLabel.CMMouseEnter(Var 메시지: TMessage);
시작하다
활성화되고 표시되고 getParentForm(Self).Active인 경우
시작하다
FFontColor := 글꼴.색상;
//텍스트 색상 저장
Font.Color := FHoverColor;
//텍스트 색상 변경
끝;
끝;
프로시저 TLeiLabel.CMMouseLeave(Var 메시지: TMessage);
시작하다
Font.Color:=FFontColor;
//텍스트의 원래 색상을 복원합니다.
끝;
속성의 기본값을 설정하려면 생성자 Create()도 오버로드해야 합니다. 생성자를 오버로드할 때 먼저 조상 클래스의 생성자를 호출해야 합니다. Create() 구문을 오버로드하는 프로그램은 다음과 같습니다.
생성자 TLeiLabel.Create(AOwner: TComponent);
시작하다
상속받은 Create(AOwner);
//조상 클래스의 생성자를 먼저 호출해야 합니다.
FStyle3D := 보통;
FXOffSet := 5;
FYOffSet := -5;
FHoverColor := clRed;
끝;
마지막으로 이 컨트롤에 아이콘을 추가해야 합니다. Delphi의 이미지 편집기를 사용하여 24×24 비트맵 비트맵을 생성하고 이를 DCR 파일로 저장할 수 있습니다. 파일 이름은 컨트롤의 Pas 파일 이름과 동일해야 합니다. 이름은 모두 대문자입니다.