Q&A

  • 컴포넌트포함한 컴포넌트 만들기에서 에러...
아래 소스코드에서 Access Violation에러가 나는데 어느 부분에서 나는 거죠? 그리고 해결책은?

제 생각엔 LPanel과 RPanel의 Caption설정부분이 이상한 것같은데요.

디자인시에 LPanel,RPanel의 Caption이 LCaption,RCaption속성에 따라 변경되려면 더 추가해야 할 것이 있는지?



unit PPanel;



interface



uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, ExtCtrls, Buttons, StdCtrls;



type

TPPanel = class(TPanel)

private

{ Private declarations }

FLPanel: TPanel;

FRPanel: TPanel;

FLCaption: string;

FRCaption: string;

protected

{ Protected declarations }

public



{ Public declarations }

constructor Create(AOwner: TComponent); override;

procedure SetFLCaption(s: string);

procedure SetFRCaption(s: string);

published

{ Published declarations }

property LTitle: string read FLTitle write SetFLCaption;

property RTitle: string read FRTitle write SetFRCaption;

end;



procedure Register;



implementation



procedure TPPanel.SetFLCaption(s: string);

begin

FLPanel.Caption:=s;

FLCaption := s;

end;



procedure TPPanel.SetFRCaption(s: string);

begin

FRPanel.Caption:=s;

FRPanel := s;

end;



constructor TPPanel.Create(AOwner: TComponent);



begin

inherited Create(AOwner);

Width := 131;

Height := 150;

FLPanel := TPanel.Create(Self);

FLPanel.BevelInner:=True;

FLPanel.SetBounds(0, 0, (width div 3), 25);

FLPanel.Parent := Self;

FRPanel := TPanel.Create(Self);

FRPanel.BevelInner:=True;

FRPanel.SetBounds(26, 0, (width - (width div 3)), 25);

FRPanel.Parent := Self;

end;



procedure Register;

begin

RegisterComponents('Samples', [TPPanel]);

end;



end.



{ This code came from Lloyd's help file! }

1  COMMENTS
  • Profile
    전철호 1999.06.21 20:22
    박성훈 께서 말씀하시기를...

    > 아래 소스코드에서 Access Violation에러가 나는데 어느 부분에서 나는 거죠? 그리고 해결책은?

    > 제 생각엔 LPanel과 RPanel의 Caption설정부분이 이상한 것같은데요.

    > 디자인시에 LPanel,RPanel의 Caption이 LCaption,RCaption속성에 따라 변경되려면 더 추가해야 할 것이 있는지?

    >

    > unit PPanel;

    >

    > interface

    >

    > uses

    > SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

    > Forms, Dialogs, ExtCtrls, Buttons, StdCtrls;

    >

    > type

    > TPPanel = class(TPanel)

    > private

    > { Private declarations }

    > FLPanel: TPanel;

    > FRPanel: TPanel;

    > FLCaption: string;

    > FRCaption: string;

    > protected

    > { Protected declarations }

    > public

    >

    > { Public declarations }

    > constructor Create(AOwner: TComponent); override;

    > procedure SetFLCaption(s: string);

    > procedure SetFRCaption(s: string);

    > published

    > { Published declarations }

    > property LTitle: string read FLTitle write SetFLCaption;

    > property RTitle: string read FRTitle write SetFRCaption;

    > end;

    >

    > procedure Register;

    >

    > implementation

    >

    > procedure TPPanel.SetFLCaption(s: string);

    > begin

    > FLPanel.Caption:=s;

    > FLCaption := s;

    > end;

    >

    > procedure TPPanel.SetFRCaption(s: string);

    > begin

    > FRPanel.Caption:=s;

    > FRPanel := s;

    > end;

    >

    > constructor TPPanel.Create(AOwner: TComponent);

    >

    > begin

    > inherited Create(AOwner);

    > Width := 131;

    > Height := 150;

    > FLPanel := TPanel.Create(Self);

    > FLPanel.BevelInner:=True;

    > FLPanel.SetBounds(0, 0, (width div 3), 25);

    > FLPanel.Parent := Self;

    > FRPanel := TPanel.Create(Self);

    > FRPanel.BevelInner:=True;

    > FRPanel.SetBounds(26, 0, (width - (width div 3)), 25);

    > FRPanel.Parent := Self;

    > end;

    >

    > procedure Register;

    > begin

    > RegisterComponents('Samples', [TPPanel]);

    > end;

    >

    > end.

    >

    > { This code came from Lloyd's help file! }



    안녕하세요.. 전철호입니다.

    귀하께서 만든 콤포넌트 소스를 보니

    Destructor부분이 없네요.

    없어도 되지만 귀하께서 작성한 코딩을 보면

    꼭 필요합니다.

    TPanel Component에 두개의 Panel 콤포넌트를 메모리에서

    제거하는 부분이 필요하거든요..



    FLPanel.Free;

    FRpanel.Free;

    inherited destroy;



    이부분을 넣으면 아마 Access Violation에러가 나지 않을 것 같네요.

    아마 콤포넌트 제거시 이에러가 날 것 같은데.



    참고) 귀하께서 만든 콤포넌트는 리소스가 많이 먹겠군요.

    패널이 세게이니까요.

    그러지마시고 Tcustomcontrol에서 상속을 받아서

    Paint부분에서 윈도우를 두개로 분활되는 효과를 주어서

    하면은 아마 리소스도 쩍고 훨씬 낳은 콤포넌트가 될것 같네요.

    그리고 제홈페이지에 가셔서 개발콤포넌트부분에 가면은

    이와 비슷한 Component가 있습니다.

    TJeonLabel이것은 수평이 아니라 수직으로 되어 있는

    것입니다.

    콤포넌트를 다운 받아서 테스트를 해보세요.

    단 Shareware버전입니다.



    • 하재희
      1999.04.14 21:03
      안녕하십니까! 저는 현재 델파이로 프로젝트를 수행하고 있는 하재희라고 합니다. 다름이 아니오라 델파...
    • 보라뚱땡이
      1999.04.15 01:45
      이 사이트 자료실 54번 항목에 500개의 버튼이미지가 있는데요..... 그거말구 BitBtn에 사이즈상 Icon을...
    • 안치봉
      1999.04.14 21:18
      하재희 wrote: > 안녕하십니까! > 저는 현재 델파이로 프로젝트를 수행하고 있는 하재희라고 합니다. > ...
    • Heaven
    • 1999.06.21 13:27
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      1999.04.14 19:46
      microsoft Active Movie 2.0을 install 시키고 임의의 구간을 입력 받아서 재생하려고 하는데 property가 ...
    • peter
      1999.06.21 14:13
      Heaven 께서 말씀하시기를... > 안녕하세요.. > 도움 많이 받은 heaven입니다.. > > 퀵레포트에서 소...
    • 안치봉
      1999.04.14 21:01
      이진수 wrote: > microsoft Active Movie 2.0을 install 시키고 임의의 구간을 입력 > 받아서 재생하려고...
    • 이진수
    • 1999.04.14 19:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김용식
      1999.06.21 08:56
      음... 이상한 일이군요!!! 프로그램 도중에 외부프로그램을 실행시키고 외부프로그램이 끝나기를 기다렸...
    • 안치봉
      1999.04.14 21:01
      이진수 wrote: > microsoft Active Movie 2.0을 install 시키고 임의의 구간을 입력 > 받아서 재생하려고...
    • 이순희
    • 1999.04.14 06:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.14 19:39
      이순희 wrote: > 자꾸 질문해서 죄송합니다.. > 델파이를 많이 사용 안해봐서... 잘 모르는게 넘 많네요....
    • 박성훈
    • 1999.06.21 07:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.06.21 20:22
      박성훈 께서 말씀하시기를... > 아래 소스코드에서 Access Violation에러가 나는데 어느 부분에서 나는 거...
    • 이호선
    • 1999.04.14 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 07:50
      메뉴를 옆으로 나오게 하려면, 여러개의 팝업메뉴를 사용하시는 편이 좋습니다. 또한 그래픽을 넣으려면 ...
    • 박성훈
    • 1999.06.21 05:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 문창완
      1999.04.14 05:28
      자꾸만 질문하는 사람입니다. 프린터에서 날려보내는 에러메세지(예: 용지없음,Online Off 등등) 을 가로...
    • 이정욱
      1999.04.14 07:48
      에러를 가로 챈다기 보다는 에러가 났을때 반응을 하게 하는것입니다. 하지만 프린터 캔버스를 이용해서 ...
    • 이순희
    • 1999.04.14 06:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.14 19:39
      이순희 wrote: > 자꾸 질문해서 죄송합니다.. > 델파이를 많이 사용 안해봐서... 잘 모르는게 넘 많네요....
    • 빈센트
    • 1999.06.21 05:43
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 유민호
      1999.06.21 21:36
      TQRSysData의 Property중 Data를 qrsDetailNo로 지정해주면 됩니다. 물론 DetailBand에 올려놓아야 겠지요...
    • 초보
      1999.06.22 03:17
      유민호 께서 말씀하시기를... > TQRSysData의 Property중 Data를 qrsDetailNo로 지정해주면 됩니다. > 물...
    • 이용민
      1999.06.22 04:33
      혹시 퀵리포트의 dataset 설정을 하지 않으신 것이 아닌지... 아니면 번호를 출력시켜줄 데이타 셋 설정을...
    • 이호선
    • 1999.04.14 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 07:50
      메뉴를 옆으로 나오게 하려면, 여러개의 팝업메뉴를 사용하시는 편이 좋습니다. 또한 그래픽을 넣으려면 ...
    • 류동균
      1999.06.21 05:21
      김형철 께서 말씀하시기를... > 입력받은 날짜의 앞의 날짜를 찾아오는 방법? > 입력에디트에서 날짜를 ...
    • 문창완
    • 1999.04.14 05:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 07:48
      에러를 가로 챈다기 보다는 에러가 났을때 반응을 하게 하는것입니다. 하지만 프린터 캔버스를 이용해서 ...
    • JJS
    • 1999.06.21 02:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.06.21 20:08
      JJS 께서 말씀하시기를... > 초보의 서러움 > > 전화번호를 등록하려는데 국번을 4자리로 두고 사용하...
    • 문창완
    • 1999.04.14 00:07
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.14 00:29
      문창완 wrote: > 프린터 출력시 진행율을 보여주고 싶습니다. > Printer Object 루프가 아닌 프린터 시그...
    • 이상돈
      1999.04.14 01:21
      델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 이건 어떤내용인지요..? 이걸 이용하면 안되는...
    • 안치봉
      1999.04.14 01:35
      이상돈 wrote: > 델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 > 이건 어떤내용인지요..? >...
    • 문창완
      1999.04.14 05:26
      안치봉 wrote: > 이상돈 wrote: > > 델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 > > 이건...
    • 김경수
    • 1999.06.20 23:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김경수
      1999.07.19 21:00
      안녕하세요.. 예전에 제가 올린건데.. 아무도 연락을 안주셔서.. 흑 지금상황으로써는 cookie밖에 사용할...