Q&A

  • 마음이 급해서 또 질문합니다..죄송
콤포넌트를 만드는 과정에서 프로퍼티의 형을 TControl로 선언하니
폼위에 모든 컴포넌트가 올라 오더군요  여기서 Panel위에 있는 컴포넌트만
열거형 프로퍼티에 나오게 하고 싶어서 방법을 찾고 있습니다.

클래스를 만들어 형을  만든 클래스로  정의하면 될까 하는데
클래스를 만들때 클래스에 컴포넌트들을 삽입시키는 방법을
모르겠습니다. TControl을 선언시 컴포넌트 리스트 들이 나오는데

어떻게 해야 컴포넌트들이 나오는지 잘 모르겠습니다.
클래스에 콤포넌트들을 나오게 하는 방법좀 알려 주시면 감사하겠습나다.

오랜시간을 고생하고 있습니다.  여기저기 돌아다녀도 특별한 해답을
구하지 못하고 있어서 이렇게 질문을 올립니다.  방법좀 알려 주시면
감사하겠 습니다.  예제가 아니더라도 방법만이라도 알려 주시면.....-.-;

아래는 코등중인 소스의 일부분 입니다..


TControlsItem = class(TCollectionItem)
  private
    FComponentNm : TControl;
    FCol: Integer;
    procedure SetCol(const Value: Integer);
    procedure SetComponentNm(Value : TControl);
  public
    constructor Create(Collection: TCollection); override;
    procedure AssignTo(Dest: TPersistent); override;
    function GetDisplayName: string; override;
    destructor Destroy; override;
    procedure UpdateItem(Index: integer);
    procedure UpdateItems;
    procedure AddControlsItem(Value : TControl);

  published
<----------------여기-이부분 입니다.----------------------------------->

    property PsCompontNm : TControl read FComponentNm write SetComponentNm;

   PsCompontNm에 나오는 컴포넌트 리스트를 특정 Panel위에 있는 컴포넌트로 나오게 할려구요..

<------------------------------------------------------------------------>
    property PsCol : Integer read FCol write SetCol default 0;
  end;

//-------------------------------------------
  TControls = class(TCollection)
  private
    FOwner : TPsRealGrid;
    function GetItem(Index: Integer):TControlsItem;
    procedure SetItem(Index: Integer; Value: TControlsItem);
  protected
    function GetOwner: TPersistent; override;
    procedure Update(Item: TCollectionItem); override;
  public
    constructor Create(AOwner: TPsRealGrid);
    function Add: TControlsItem;
    procedure AddControls(Value : TControl);
    property Items[Index: Integer]: TControlsItem read GetItem write SetItem; default;
  end;
1  COMMENTS
  • Profile
    최용일 2005.07.28 17:29
    안녕하세요. 최용일입니다.

    제가 제대로 이해하고 있는지는 잘 모르겠지만...
    Property Editor를 만들면 되겠네요.
    Property Editor에서 컴포넌트 형을 체크해서 TControlsItem 이면 특정판넬의 컴포넌트만 보여주고, 아니면 기본적인 형태로 모두 다 보여주도록... 물론 특정 판넬에 대한 정보는 TControlsItem 여기에 있어야 되겠죠...

    그런데 과연 이게 왜 필요하느냐? 하는 의문이 드네요.

    제 생각엔 꼭 해야 된다면, 열거형으로 목록 나오게 하는것보다는 다이얼로그창 하나 띄워서 특정 판넬 선택하도록하고 그 판넬의 컴포넌트 목록 쭉 보여주고 입력할 수 있도록 하는것이 좋을것 같네요. Collection형에서 열거형으로 목록보여주는 방식은 본적이 없는듯... TListView.Items, TMemo.Lines, TListBox.Item, TTreeView.Nodes, ... 등 다 새창을 띄워서 하죠...

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