Q&A

  • 동적으로 컴퍼넌트를 추가하던 중에....
동적으로 컴퍼넌트를 만드는 작업을 하고 있습니다..

그래서 클래스를 만들어서 먼저 페이지 컨트롤을 만들고

그담에 탭시트를 만들고 각 탭시트 안에 DB그리드를 만들려고 합니다..

unit F_MyPageControl;

interface

uses
  Windows, Classes, extctrls, comctrls, SysUtils, Controls;

type
  TMyPageControl = class(TPageControl)

  private
    fGongListCD: TStringList;
    fGongListNM: TStringList;
    fPC_GB   : Byte;
    fInstance: TMyPageControl;
    procedure MakePage_J;

  protected
    TabSheet_J : Array of TTabSheet;
    property GongListCD: TStringList read fGongListCD write fGongListCD;
    property GongListNM: TStringList read fGongListNM write fGongListNM;
    property Instance: TMyPageControl read fInstance write fInstance;
    property PC_GB: Byte read fPC_GB write fPC_GB;


  public
    constructor Create(AList : TStringList; BList: TStringList; APC_GB: Byte; AInstance: TMyPageControl);
    destructor Destroy; override;


end;

implementation
uses F_MyPageControl_Main;

constructor TMyPageControl.Create(AList: TStringList; BList: TStringList; APC_GB: Byte; AInstance: TMyPageControl);
var
  i : Integer;
begin
  GongListCD := TStringList.Create;
  GongListCD.Assign(AList);
  GongListNM := TStringList.Create;
  GongListNM.Assign(BList);
  PC_GB := APC_GB;
  Instance := AInstance;



  if PC_GB = 0 then    //페이지 컨트롤 만들기
    begin
    inherited Create(FMyPageControl_Main.Panel1);
    parent := FMyPageControl_Main.panel1;
    name := 'PC_J';
    Align := alClient;
    visible := true;
    MakePage_J;
    end;

end;

destructor TMyPageControl.Destroy;
begin
  inherited;

  try
    GongListCD.Free;
    GongListNM.Free;
  except
  end;

end;

procedure TMyPageControl.MakePage_J;
var
  i: Integer;
  aa : TPageControl;

begin
  if PC_GB = 0 then               //탭시트 만들기..
    begin
    SetLength(TabSheet_J,GongListCD.Count);

    for i := 0 to GongListCD.Count - 1 do
      begin
      TabSheet_J[i] := TTabSheet.Create(FMyPageControl_Main.FindComponent('PC_J') as TPageControl);
      TabSheet_J[i].PageControl := FMyPageControl_Main.FindComponent('PC_J') as TPageControl;
      TabSheet_J[i].Name := GongListCD.Strings[i];
      TabSheet_J[i].Caption := GongListNM.Strings[i];
      TabSheet_J[i].PageIndex := i;
      TabSheet_J[i].parent := FMyPageControl_Main.FindComponent('PC_J') as TPageControl;
      TabSheet_J[i].Visible := True;
      end;

    end;


end;

end.


문제는요 생성해줄때 넘어온 AInstance의 값이 nil이더라구요..

그래서 다른 방법으로 FindCompernent를 사용할라고 해도 nil값만 넘어오고

이외에 다른 특별한 소스는 없습니다.(테스트중이라..)

가장 먼저 알고 싶은것은 저런식으로 생성을 한다면 먼저 생성된 페이지 컨트롤을 어떻게 아는지..

그리고 지금 하는 방법이 잘못 됐다면 약식으로 써주시면 고맙겠습니다.

클래스를 구조를 어덯게 해야한다던지..혼자하려니 힘드네염..

도와주세요~~~
2  COMMENTS
  • Profile
    넘버3 2003.02.18 05:43
    TPageControl를 Creat할 때 override가 빠진것 같군요...


    public
        constructor Create(AList : TStringList; BList: TStringList; APC_GB:   Byte; AInstance: TMyPageControl); override;

    이렇게 하심이....


  • Profile
    열심히 2003.02.18 05:51
    페이지 컨트롤은 생성이 됩니다...

    탭시트를 생성할때 먼저 생성된 pagecontrol을 넣어줘야하는데

    앞에서 생성된 pagecontrol을 못가지고 오는게 문제거든요~~ㅠ.ㅠ
    • 진돌
    • 2003.02.19 02:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.19 02:58
      SizeOf 함수는 데이터 형의 크기가 반환됩니다. 님이 원하시는 것은 StrLen 이겠군여. 널값을 제외한...
    • 진돌
      2003.02.19 03:04
      그렇다면 Socket 통신을 할때 aaa : String; ________________________________ | size | &nb...
    • 구창민
      2003.02.19 03:22
      무슨 질문인지를 모르겠군여..^_^ 님이 처한 상황을 제가 알수 없기 때문입니다. 다만, 통신을 할때 ...
    • 한원희
      2003.02.19 20:35
      안녕하세요. 한원희입니다. GetActivateWindow API를 이용해 보세요. 그리고, WindowState 속성도 검사...
    • 임옥섭
      2003.02.19 01:37
      vb의 직접실행창 보다는 불편하지만. 델파이도.. Evaluate/Modify 메뉴가 있습니다. 원하는 변수/식 에다...
    • 최용일
      2003.02.19 01:25
      안녕하세요. 최용일입니다. Watch Window를 이용하세요... Ctrl+F5던가... ^^ 항상 즐코하세요...
    • cell
    • 2003.02.19 01:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.19 01:32
      이렇게 해 보세여.. procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin &n...
    • cell
      2003.02.19 01:41
      ..
    • 김기문
    • 2003.02.19 00:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.02.19 01:47
      안녕하세요. 최용일입니다. 델파이 메뉴의 Help/Windows SDK에서 찾아보세요... 그냥 F1누르면 델파이에...
    • 전원이
    • 2003.02.19 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.02.19 02:01
      안녕하세요. 최용일입니다. InPortB, OutPortB는 델파이에 없네요... 걍 만들어 쓰세요... procedure...
    • 한원희
      2003.02.19 00:11
      안녕하세요. 한원희입니다. Rx 패키지를 설치하면 됩니다. 자료실에 Rx 패키지가 있으니, 받아서 설치...
    • 김현승
    • 2003.02.18 21:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • △┫┃▒┃COLON
      2003.02.18 23:50
      안녕하세요... 세미콜론입니다. 저도 초보라 잘은 모르지만.... *.DCU  파일은 컴파일시에 자동...
    • Sean
    • 2003.02.18 20:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 신승욱
      2003.02.19 01:42
      이렇게 해보세요..안돼면..저도 몰래요.. close; sql.clear; sql.add('insert into ' + temp_table + '(...
    • 구창민
      2003.02.18 21:11
      DB 질문을 하실때는, 사용하시는 DB 가 먼지를 알려주시면 양질의 답변을 얻으실 수 있을 것입니다. ...
    • Sean
      2003.02.18 23:56
      네.... 답변 감사합니다. DB는 Access이고요... 제가 질문의 내용이 조금 미흡한거 같네요. 지금...
    • 강보춘
    • 2003.02.18 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.18 20:57
      Hint Window 와 똑같이 생긴 윈도우를 만들어 현 좌표를 구하신다음, 타이머 내에서 동적 생성 하시...
    • 진돌
    • 2003.02.18 20:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.18 21:06
      너무 어렵게 생각하신게 아닌지.. 말씀하시는 가변 길이 문자열 형은 string 을 쓰시면 됩니다. ...
    • 진돌
      2003.02.18 21:18
      그런데요.. digitString : String; 으로 선언을 해도 에러가 납니다.. 다음과 같습니다 [Error]Type '...
    • 박상윤
      2003.02.26 21:41
      일단 어떤 용도로 사용을 하실려 하는지. 크기를 줄이는 방법은 여러가지가 있습니다. 필요에 따라 사용...
    • 이희진
      2003.02.22 01:08
      어떤 이유에서 파일 크기의 한계를 두어야 하는지 잘 모르겠지만, 이미지 크기가 크게 문제되지 않는거...
    • 김정명
    • 2003.02.18 06:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.02.18 18:47
      for i:=0 to 10 do begin    Application.ProcessMessages;    edit1.text := int...
    • 미소나눔
      2003.02.18 18:56
      Application.ProcessMessages; 이게 있어야징... 즐푸~
    • 토미사랑
      2003.02.18 23:33
      sleep()함수를 사용하면, 프로그램이 완전히 멈춰버리게 되잖아요... sleep()을 사용하지 않고서는???
    • 열심히
    • 2003.02.18 05:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 넘버3
      2003.02.18 05:43
      TPageControl를 Creat할 때 override가 빠진것 같군요... public     constru...
    • 열심히
      2003.02.18 05:51
      페이지 컨트롤은 생성이 됩니다... 탭시트를 생성할때 먼저 생성된 pagecontrol을 넣어줘야하는데 앞...
    • 아폴론
    • 2003.02.18 04:24
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.02.18 08:37
      a.cg_krno : G200301001 ...이런 형식의 Char문자가 들어갑니다 a.cg_date : 2003-01-31 ...이런 형식의 C...
    • 이중철
      2003.02.18 11:24
      마지막 필드 추가했다고 논리가 맞지 않는것은 아니에요. 단지 모래시계만 나왔다는 것은 Query가 최적...
    • 아폴론
      2003.02.18 19:31
      이중철님 감사합니다. 설명까지 해 주시고...덕분에 해결이 되었고요 앞으론 SQL문을 좀더 신중히, 차근...
    • 이중철
      2003.02.18 05:28
      음 데이타 베이스가 오라클인것 같은데... 하여간.. 님께서 쿼리를 쓰신것 보고는 판단이 안서요.. 왜냐...
    • 열심히
      2003.02.18 04:32
      어떤 오류인지 알려주실래요? 델파이에서만 오픈이 안되는건지.. 아님 다른데서도 안되는지...