델파이
델파이: 컨트롤 안에 있는 컨트롤을 이름으로 검색하기
띠리
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;