현재 선택되어 있는 컴포넌트의 Text 를 얻고 싶습니다.
예를 들어서 현재 선택되어진 컴포넌트의 텍스트의 길이가 얼마인지를 알고 싶거든요..
루틴으로 만들어서 처리를 할려니 어떤 컴포넌트가 셀렉스 되었는지는 변수로서 처리를 할수밖에 없거든요...
도움 부탁드립니다...
일단 포커스를 갖을 수 있는 컨트롤은 TWinControl 에서 상속받은 것만 가능하기
때문에 다음과 같이 코딩하면 현재 포커스를 갖는 컨트롤은 얻을 수 있습니다.
function TForm1.btnControl(Sender: TObject);
var
I : Integer;
begin
for I:= 0 to ControlCount -1 do
begin
if Controls[I] is TWinControl then
begin
if (Controls[I] as TWinControl).Focused then
begin
// 포커스가 있을 경우에 대한 처리
end;
end;
end;
위와 같은 식으로 처리하게 되면, 현재 포커스를 갖고 있는 컨트롤을 얻을 수 있습니다.
문제는 해당 컨트롤에 대한 문자열을 얻는 부분인데... 이는 컨트롤에 따라서
틀리기 때문에...즉, 어떤 컨트롤은 Caption 속성을 사용하고, 어떤 컨트롤은
Text 속성을 사용해서 문자열을 표시하기 때문입니다.
둘 중, 하나만 선택해서 하는 경우라면 문제가 없겠습니다만... 두 가지가
섞여 있다면, case 등을 이용해서 적절하게 처리하도록 하시면 되겠습니다.
때문에 다음과 같이 코딩하면 현재 포커스를 갖는 컨트롤은 얻을 수 있습니다.
function TForm1.btnControl(Sender: TObject);
var
I : Integer;
begin
for I:= 0 to ControlCount -1 do
begin
if Controls[I] is TWinControl then
begin
if (Controls[I] as TWinControl).Focused then
begin
// 포커스가 있을 경우에 대한 처리
end;
end;
end;
위와 같은 식으로 처리하게 되면, 현재 포커스를 갖고 있는 컨트롤을 얻을 수 있습니다.
문제는 해당 컨트롤에 대한 문자열을 얻는 부분인데... 이는 컨트롤에 따라서
틀리기 때문에...즉, 어떤 컨트롤은 Caption 속성을 사용하고, 어떤 컨트롤은
Text 속성을 사용해서 문자열을 표시하기 때문입니다.
둘 중, 하나만 선택해서 하는 경우라면 문제가 없겠습니다만... 두 가지가
섞여 있다면, case 등을 이용해서 적절하게 처리하도록 하시면 되겠습니다.