Q&A

  • (질문) 'TWinControl' 타입을 'TControl'으로 변환하는 방법
간략하게 코드를 적었습니다.



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' 타입이어야 합니다.)

1  COMMENTS
  • Profile
    구창민 2000.02.11 01:50
    김진호 wrote:

    > 간략하게 코드를 적었습니다.

    >

    > 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;