예를 들어서 My_Name이라는 Name으로 컴퍼넌트가 있는데 이컴퍼넌트가
TEdit인지..TMemo인지..TComboBox인지등등를 알아내서 변수에 값을 넣고싶은데..
어떻게 해야할까여...
과정은 이렇습니다. 사용자로 하여금 Edit로 입력을 받아서 입력한 것이 컴퍼넌트이름이고 그 이름으로된것이 TEdit인지.. TCombobox인지를 알아내서 색상을 바꾸려합니다.
물론 색상또한 사용자로 하여금 선택받는것이구여!
결론:프로시저(컴퍼넌트이름, 색깔);이케 보내는거죠!
그럼 프로시저는 컴퍼넌트이름과 색깔을 받아서 처리를하는것이죠!
제가 해본것은..
procedure TForm1.Button5Click(Sender: TObject);
var
AEdit: TEdit;
AName: string;
begin
AName:= Combobox2.Text;
AEdit:= Self.FindComponent(AName) as TEdit;
if AEdit<>nil then
AEdit.Color := clBlue
Memo_Name(AEdit, clBlue);
else
ShowMessage(AName + '의 컴퍼넌트가 없습니다.');
end;
--근데 문제는 ComName이 TEdit인지..TCombobox인지를 알아야 넘길텐데...
--지금 위의 것은 TEdit일 경우만입니다.TCombobox인경우는 안됩니다.
procedure Memo_Name(ComName : TMemo ; Col : TColor);--여기에 값을 넘겨야합니다.
begin
ComName.Color := Col;
end;
end.
이므로 TControl 으로 모든것을 처리해도 상관 없습니다.
procedure TForm1.Button5Click(Sender: TObject);
var
ACont: TControl;
begin
ACont := TControl(Self.FindComponent(Combobox2.Text));
if ACont <>nil then
ACont.color := clBlue
else
ShowMessage(AName + '의 컴퍼넌트가 없습니다.');
end;