Q&A

  • 동적생성한 TabSheet안에 메모장 동적생성하기...
안녕하세요...

PageControl을 생성하고 또 TabSheet를 생성하고 그 안에 메모장을 올려놨습니다.

그리고 버튼을 누를때마다 TabSheet가 하나 증가하고 그 안에 메모장도 하나 동적생성시키려고 합니다.

동적생성하면 Parent를 지정해주어야 눈에 보입니다.
근데 TabSheet는 parent를 PageControl로 하면 되는데 메모장을 TabSheet를 동적생성 해주면서 이름을 변수값으로 했더니
Parent를 넘겨줄 방법이 없습니다...
소스는....

전역변수
var
  idx : integer;  // 폼 생성시 idx := 1;


  with PageControl1 do
  begin
    with TTabSheet.Create(Self) do
    begin
      PageControl := PageControl1;
      Caption     := 'TabSheet' + inttostr(idx);
      Name        := 'TabSheet' + inttostr(idx);

        with TMemo.Create(self) do
        begin
          Name := 'Memo' + inttostr(idx);
          Left := 8 + 5;
         Top := 8 + 5;
         Width := 521;
         Height := 377;
         Parent := ??;  --> 이 부분을 어떻게 해야 될지 모르겠습니다.
       end;        
  end;

** 참고로 새로 만들어지는 TabSheet에 종속되어야 하거든요...
    안 그러면 메모장 위치도 틀려지고...

암튼 좀 갈켜주세요.
3  COMMENTS
  • Profile
    허일학 2002.02.22 00:09



    다음처럼 하니까 생성이 잘되는데~
    한번해보시길~...될껄~? (^_^)

    var
         TabSheet: TTabSheet;
         Memo    : TMemo;
    begin
         ///pagecontrol에 시트하나를 생성
         TabSheet := TTabSheet.Create(PageControl1);
         TabSheet.PageControl := PageControl1;
         TabSheet.ImageIndex  := 30;
         TabSheet.Tag         := 0;
         //메모박스 생성....
         Memo := TMemo.Create(PageControl1);
         Memo.Parent         := TabSheet;
         Memo.Align          := alClient;
         Memo.ScrollBars     := ssBoth;
         Memo.HideScrollBars := false;
         Memo.HideSelection  := false;
         Memo.PlainText      := true;
         Memo.Font.Name      := '바탕체;
         Memo.Font.Size      := 10;
         Memo.WantTabs       := true;
         Memo.WordWrap       := False;
         Memo.Text           := '';

  • Profile
    husky_kim 2002.02.22 00:27
    고맙습니다...
    아예 동적생성 할 때 소유자를 parent로 하셨군요...
    글쿠나...

    그럼 동적생성한 컴포넌트들의 이름은 임의로 만들어줘야 하나요??
    아니면 내부적으로 가져올 수 있나요?

    그리고 버튼을 누르면 바로 다음 탭이 열리게 하려면 어떻게 하나요?
    PageControl.ActivePageIndex := idx;
    이렇게 해서는 안되던데...

    한번더 부탁합니다.
  • Profile
    husky_kim 2002.02.22 00:56
    동적생성한 컴포넌트들은 임의로 이름을 주었고...
    Memo.Name := 'Memo' + inttostr(idx);
    탭 활성화는 index값이 0부터이군요...이론...^^
    PageControl1.ActivePageIndex := idx -1;
    암튼 감솨.