2012년 10월 22일 월요일

Class Helper

Delphi 2006 부터 추가된 기능으로 개체를 상속하지 않고 클래스를 확장 할 수 있는 방법입니다.
간단한 예제를 위하여
  TEdit.Text 값을 Integer 값으로 불러 올 수 있는 기능을 구현 해 보렵니다.
1. Edit 컨트롤을 2개 올려 놓고 Edit1.text:= '2100'; Edit2.Text:= '3200';을 넣습니다.

2. type  문 가장 상단에 아래와 같은 형식으로 추가합니다.

type
 TMyEditor = class helper for TEdit
    function Value: integer;
  end;


3. Ctrl + Shift + 'C"를 누르면

{ TMyEditor }
function TMyEditor.Value: integer;
begin

end;
이 만들어 집니다. begin end 사이에 아래 문장을 추가합니다.

  if text <> '' then
    result:= StrtoIntdef(text,0);

4. 그리고 버튼을 하나 올려 놓고 아래와 같이 추가합니다.

procedure TForm3.Button1Click(Sender: TObject);
begin
  ShowMessageFmt('%d',[Edit1.Value + Edit2.Value]);
end;

5. TEdit 에 Value 라는 메소드가 추가 되었고, 디자인 타임에서도 적용 됨을 알 수 있습니다.
6. 다른 폼에서도 interface 의 uses 에 추가만 해준다면 그곳에서도 사용이 가능합니다.

7. Xe3 버전 부터는 Record Helper 라는 것이 추가 되었네요.


댓글 없음:

델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.