간략하게 코드를 적었습니다.
procedure test(sender:TWinControl);
begin
if sender.controls[index] is TButton then
test(sender.controls[index]);
end;
위의 루틴을 컴파일하면
[Error] test.pas(58): Incompatible types: 'TWinControl' and 'TControl'
라는 에라가 납니다.
sender.controls[index]가 'TControl'타입이라서 그런것 같은데
왜 'TWinControl' 타입이 아니고 'TControl' 인가요?
그렇다면 어떻해야 sender.controls[index]을 'TWinControl' 타입으로 바꿀수 있나요?
(sender는 반드시 'TWinControl' 타입이어야 합니다.)
> 간략하게 코드를 적었습니다.
>
> procedure test(sender:TWinControl);
> begin
> if sender.controls[index] is TButton then
> test(sender.controls[index]);
> end;
>
> 위의 루틴을 컴파일하면
>
> [Error] test.pas(58): Incompatible types: 'TWinControl' and 'TControl'
>
> 라는 에라가 납니다.
>
> sender.controls[index]가 'TControl'타입이라서 그런것 같은데
>
> 왜 'TWinControl' 타입이 아니고 'TControl' 인가요?
>
> 그렇다면 어떻해야 sender.controls[index]을 'TWinControl' 타입으로 바꿀수 있나요?
>
> (sender는 반드시 'TWinControl' 타입이어야 합니다.)
언뜻보니 재귀호출을 하고 계시는 군요.
무슨 작업을 하시는 지 도저히 감이 안오지만 ^^
Type Casting을 하시면 원하시는 작업은 되겠네요.
아래처럼..한번 해보세요. 아마 될겁니다.
그럼~ 즐거운 프로그래밍 하세요~
procedure test(sender:TWinControl);
begin
if sender.controls[index] is TButton then
test(TWinControl(sender.controls[index]));
end;