Unity3d C# toolba 사용해보기

델파이의 findcomponent를 활용하여보자

안녕하세요 메르세데스입니다. 델파이의 findcomponent를 활용하여 소스코딩하는 것을 알아보도록 하겠습니다.

말 그대로 컴포넌트를 찾는 함수라고 생각하시면되겠습니다. 각종 요소들이 컴포넌트로 되어있고 이런 컴포넌트를 찾는 함수를 활용한다면.. 반복 적인 패턴의 코딩을 획기적으로 줄일 수 있는 효율적인 함수라고 생각이 듭니다.




사실 프로그램을 하면서.. 해당하는 폼이나.. 오브젝트의 이름이 규칙적으로 증가하거나 감소한다 던 가  규칙성을 갖고 있다면..
해당 소스를 복사해서 붙여 넣는 작업을 반복 적으로 하여 프로그램 하는 경우가 많은데요.. ( 대부분은 귀찮아서 그렇죠..)

이름에 대한 규칙을 정의해서 처리할 수 있다면.. 반복문 안에 다가 마치 오브젝트 이름을 변수처럼 처리할 수 있는 방법이 가능해집니다.


procedure TForm1.TestBtn1Click(Sender: TObject);
var
 i: Integer;
const
 NamePrefix = 'MyEdit';   // myedit라는 상수를 할당
begin
 for i := 1 to 20 do begin
   TEdit.Create(Self).Name := NamePrefix + IntToStr(i);     //이름뒤에 1 , 2, 3 ,4 이런식으로 해서 TEdit컴포넌트를 생성하죠..
   with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
   begin
     Left := 10;                 //생성하면서 위치를 조정..
     Top := i * 20;
     Parent := self;   
   end;
 end;
end;


눈으로 보기에 쉽게 안 들어오실 수 있지만.. 이게 가능하지 않다면.. 폼에 에디트를 20개 찍어서 넣거나.. 아니면
create문을 20개를 반복해서 구현해야 하니.. 상당히 소스가 길어지겠죠.. 하지만 위에처럼 한다면.. 루프문안에 집어넣어 처리가 가능해지니.. 규칙만 좀 안다면.. 쉽게 코딩이 가능해지겠습니다.
TEdit(FindComponent('찾으려는이름') ) <--- 이런 식으로 컴포넌트 이름을 찾아가면 됩니다.
아래는 제가 한번 이것을 이용해서 만들어 본 것입니다.




var
 i : integer;
MyCmnt : TComponent;        // 모든 컴포넌트는 TComponent로 부터 만들어집니다.
s_TEST : TStringList;
begin
       ....... (중략)....


        s_TEST := TStringList.Create;
       s_TEST.Text := v_a_DRAIN_CTHTH_TBL[0];


        with s_TEST do
       begin
          for i:= 1 to 200 do
          begin
              MyCmnt := FindComponent('QR00'+inttostr(i));      //QR00 으로 시작하는것들을 찾아서.. 뒤에 1..2..3.. 숫자를 붙이는 패턴을 찾는다
              TQRLabel(MyCmnt ).Caption := Strings[i];            //찾아진 패턴의 컴포넌트의 Caption에 위에서 받은 리스트의 값을 입력한다.
          end;  
       end;


        .....(중략) ....


end;


뭐 10~20개야.. 그냥 복사해서 붙여 넣는 것으로 가능하다고 치겠습니다.  

하지만 200개 1000개 혹은 그 이상이 되는  되는 것을 한다고 하면..   복사해서 붙여 넣는 것이 사실 크게 어려운 일은 아니긴 합니다 만..

소스가 기하급수적으로 늘어나기 때문에 스크롤을 많이 해야 하니 눈에도 잘 안 들어 오고 복잡해 지겠죠.. 전 소스가 긴게 너무 싫습니다..


다들 잘 알고 계시는데 저만 이렇게 모르고 있었던 게 아닌가 하는 생각이 드네요 ㅜㅜ

이상으로 델파이의  findcomponent를 활용하는 방법에 대해서 알아봤습니다. 감사합니다.















댓글