프로그래밍 노트

델파이: 컨트롤 안에 있는 컨트롤을 이름으로 검색하기 본문

델파이

델파이: 컨트롤 안에 있는 컨트롤을 이름으로 검색하기

띠리 2009. 1. 21. 21:29


procedure TForm1.Button2Click(Sender: TObject);
var
  ctrlTest: TControl;
  edtTemp : TEdit;
begin
  ctrlTest := SearchCtrl(Panel1, 'Edit2');
  edtTemp := ctrlTest as  TEdit;
  edtTemp.Text := 'Test';
end;

function TForm1.SearchCtrl(wctlParent:TWinControl; sName:string):TControl;
var
  i       : integer;
  ctrlRet   : TControl;
  wctlTemp  : TWinControl;
begin
  Result := nil;

  // Parent컨트롤에 검색할 컨트롤이 있는지 검색
  for i := 0 to wctlParent.ControlCount - 1 do
  begin
    // WinControl로 치환
    wctlTemp := wctlParent.Controls[i] as TWinControl;
    // 검색할 컨트롤 밑에 컨트롤이 있는 경우
    if wctlTemp.ControlCount > 0 then
    begin
      // 재귀용법으로 검색
      ctrlRet := SearchCtrl(wctlTemp, sName);
      Result := ctrlRet;
      // 검색되었을 경우 검색 중단
      if ctrlRet <> nil then Break;
    end
    // 동일한 이름의 컨트롤이 있을 경우
    else if wctlParent.Controls[i].Name = sName then
    begin
      Result := wctlParent.Controls[i];
      Break;
    end
  end;
end;

Comments