Q&A

  • 컨트롤 동적생성방법과 포인터 답변좀 주세요..
안녕하세요..

컨트롤 동적 생성을 하려면 어떻게 하죠??
가령 Timage 컨트롤을 99개 그려낸다거나 해서..

컨트롤이름[i] 이런식으로..해서.. 배열변수처럼 For 문등으로 같이 제어하고 싶어서 그러거던요..

그리고.. 포인터는 어떻게 선언해서 사용하나요??
포인터는 실제 변수가 아니라 그냥 길안내해주는 표지판 같은거 라고 하던데..
즉 실제 데이터를 가지고 있는게 아니고 데이터가 있는 위치정보만 가지고 있다고 하던데요...

이 동적 생성된 컨트롤의 그림이 여러곳에서 필요시 이 포인터를 사용하면은 메모리 절약이 되는게 아닌지..??

포인터 컨트롤... <- 요거 가능하나요???
아니면 불가능 한 건지..--;

(컨트롤은 포인터가  안되는지... -_-;... 답변좀 부탁드립니다.)
모르는게 너무너무 많아서요..--;

포인터 선언하는법도 잘 몰라요.. -_-;
(그냥 C++ 책에 있던거 읽어본 기억이 가물가물...)

C++ 어려워서 Delphi 를 쓰는데.. 과연, 세부적으로 파고들려다 보니 이것도 어렵내요--;
4  COMMENTS
  • Profile
    최용일 2002.04.20 05:36
    안녕하세요. 최용일입니다.

    그냥 컨트롤을 배열로 선언해서 사용하세요...
    델파이에서 모든 객체(컨트롤포함해서)는 포인터형입니다.

    var
        ControlArray: array[0..99] of TImage;
        I: Integer;
    begin
        for I := 0 to 99 do
        begin
            ControlArray[I] := TImage.Create(Self);

            필요한 속성들 설정...
            ControlArray[I].Picture.LoadFromFile('c:어쩌구...');
            ControlArray[I].Left := 100;
            ......
         end;
    end;

    ^^ 항상 즐코하세요...

  • Profile
    ☆영민★ 2002.04.20 09:37
    답변은 감사합니다만... 안돼네요--;
    어디서 잘못된건지...

    소스 그대로 갖다 붙여서 컴파일 하면은 오류가 뜨네요..
    [Error] Unit1.pas : Undeclared identifier : 'TImage'
    [Error] Unit1.pas : Record, object or class type required
    [Error] Unit1.pas : Missing operator or semicolon
    [Error] Unit1.pas : Missing operator or semicolon

    그런데 제가 세미콜론 빼먹은건 없거던요..
    어디서 잘못된 걸까요??

    uses 부분에 ExtCtrls 를 추가하면은 오류는 안뜨는데...
    (Timage 컨트롤을 폼에 하나 그리고 컴파일 하면은 오류는 안나는데요..)
    TImage 컨트롤 그려 넣으니, 자동으로 'ExtCtrl' 이 uses 부분에 등록이 되더군요..

    이렇게 하면은 실행은 되는데 동적 배열이 어디갔는지 보이지를 않아요..

    ControlArray[I].Visible := true; 를 해봐도 역시나 보이질 않고...

    이거 어떻게 해야 하나요??



  • Profile
    최용일 2002.04.20 09:59
    헐헐~~ 이건 그냥 참고해서 님이 원하시는 거에 맞게 코딩하라고 한건데...

    네가지 에러 모두 님 말씀대로 uses절에 ExtCtrls유닛이 추가가안되서 생기는 겁니다.

    그리고 컨트롤의 Parent를 설정하시면 Parent내에서 그 컨트롤이 보입니다. Parent를 폼으로 하면 폼에서 보이구 판넬로 하면 판넬에서 보이죠...

    ControlArray[I].Parent := Self;

  • Profile
    ☆영민★ 2002.04.20 11:42
    동적 컨트롤 이제야 되는군요^^;

    자세한 설명 감사합니다.~~

    Parent 라는건.. 그냥 표시할 위치를 정하는 옵션 인가 보네요 (제 생각으론-_-;)