저는 지금 쿼리툴을 만들고 있습니다.
다른 사람 소스를 참고 하며 만들면서 소스와 똑같은 구조로 해봤는데 저한테만 에러가
자꾸 나는 것같아 도움을 청합니다.
폼에 스크롤 박스를 동적생성하고 버튼클릭이벤트때 닫기버튼 올라와 있는 판넬을 동적생성하고 닫기 버튼을 다시 누르면 판넬이 없어지는 것인데
닫기버튼 클릭할때마다 EAccess나 EAbstractError가 발생합니다.
그 부분만 떼서 올렸는데 어디가 잘못됐는지 조언 좀 부탁드립니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TAPanel = class(TPanel)
Btn : TButton;
procedure btnClick(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
Destructor destroy; override;
end;
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
APanel : TAPanel;
AScroll : TScrollBox;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
x, y : Integer;
begin
APanel := TAPanel.Create(Self);
APanel.Parent := AScroll;
APanel.Top := RanDom(AScroll.Height);
APanel.Left := RanDom(AScroll.Width);
APanel.Btn.OnClick := APanel.btnClick;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Ascroll := TSCrollBox.Create(Self);
AScroll.Parent := Self;
AScroll.Align := alClient;
end;
{ TAPanel }
procedure TAPanel.btnClick(Sender: TObject);
begin
Self.free; //여기서 EAbstractError발생
end;
constructor TAPanel.Create(AOwner: TComponent);
begin
inherited;
Btn := TButton.Create(Self);
Btn.parent := Self;
Btn.Caption := 'x';
end;
destructor TAPanel.destroy;
begin
inherited;
end;
end.
/////////////여기는 폼소스
object Form1: TForm1
Left = 192
Top = 107
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 392
Width = 688
Height = 61
Align = alBottom
Caption = 'Panel1'
TabOrder = 0
object Button1: TButton
Left = 72
Top = 24
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 192
Top = 16
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 1
end
end
end
아래에 소스는 문제가 없는것 같습니다.
지금 제컴에서는 아주 잘되거든여..
문제가 다른곳에 있지 않는지 확인해 보세여..
그럼 이만
jinnon wrote:
> 저는 지금 쿼리툴을 만들고 있습니다.
> 다른 사람 소스를 참고 하며 만들면서 소스와 똑같은 구조로 해봤는데 저한테만 에러가
> 자꾸 나는 것같아 도움을 청합니다.
>
> 폼에 스크롤 박스를 동적생성하고 버튼클릭이벤트때 닫기버튼 올라와 있는 판넬을 동적생성하고 닫기 버튼을 다시 누르면 판넬이 없어지는 것인데
> 닫기버튼 클릭할때마다 EAccess나 EAbstractError가 발생합니다.
>
> 그 부분만 떼서 올렸는데 어디가 잘못됐는지 조언 좀 부탁드립니다.
>
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls, ExtCtrls;
>
> type
> TAPanel = class(TPanel)
> Btn : TButton;
> procedure btnClick(Sender: TObject);
> public
> constructor Create(AOwner: TComponent); override;
> Destructor destroy; override;
> end;
> TForm1 = class(TForm)
> Panel1: TPanel;
> Button1: TButton;
> Button2: TButton;
> procedure Button1Click(Sender: TObject);
> procedure FormCreate(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
> APanel : TAPanel;
> AScroll : TScrollBox;
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> x, y : Integer;
> begin
>
> APanel := TAPanel.Create(Self);
> APanel.Parent := AScroll;
> APanel.Top := RanDom(AScroll.Height);
> APanel.Left := RanDom(AScroll.Width);
> APanel.Btn.OnClick := APanel.btnClick;
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Ascroll := TSCrollBox.Create(Self);
> AScroll.Parent := Self;
> AScroll.Align := alClient;
> end;
>
> { TAPanel }
>
> procedure TAPanel.btnClick(Sender: TObject);
> begin
> Self.free; //여기서 EAbstractError발생
> end;
>
> constructor TAPanel.Create(AOwner: TComponent);
> begin
> inherited;
> Btn := TButton.Create(Self);
> Btn.parent := Self;
> Btn.Caption := 'x';
>
> end;
>
> destructor TAPanel.destroy;
> begin
> inherited;
> end;
>
> end.
>
> /////////////여기는 폼소스
> object Form1: TForm1
> Left = 192
> Top = 107
> Width = 696
> Height = 480
> Caption = 'Form1'
> Color = clBtnFace
> Font.Charset = DEFAULT_CHARSET
> Font.Color = clWindowText
> Font.Height = -11
> Font.Name = 'MS Sans Serif'
> Font.Style = []
> OldCreateOrder = False
> OnCreate = FormCreate
> PixelsPerInch = 96
> TextHeight = 13
> object Panel1: TPanel
> Left = 0
> Top = 392
> Width = 688
> Height = 61
> Align = alBottom
> Caption = 'Panel1'
> TabOrder = 0
> object Button1: TButton
> Left = 72
> Top = 24
> Width = 75
> Height = 25
> Caption = 'Button1'
> TabOrder = 0
> OnClick = Button1Click
> end
> object Button2: TButton
> Left = 192
> Top = 16
> Width = 75
> Height = 25
> Caption = 'Button2'
> TabOrder = 1
> end
> end
> end
>