TComboBox를 상속받아서
TComDouble 이라는 콤포넌트를 만드려고 합니다.
단지 TStrings (이름 FDoubleItems)를 추가하여 items, DoubleItems 두개를
사용하려고 합니다.
Create 를 다음과 같이 했는데
constructor TComboDuble.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDoubleItems := TStringList.Create;
end;
Item에 데이터를 추가하면 다음과 같은 error 발생합니다.
Access violation at address 4139FB2 in moudule 'VCL30.DPL'. Read of address FFFFFFFF.
어떻게 해결해야 하나요 ??
파일 첨부합니다.
> TComboBox를 상속받아서
> TComDouble 이라는 콤포넌트를 만드려고 합니다.
>
> 단지 TStrings (이름 FDoubleItems)를 추가하여 items, DoubleItems 두개를
> 사용하려고 합니다.
>
> Create 를 다음과 같이 했는데
>
> constructor TComboDuble.Create(AOwner: TComponent);
> begin
> inherited Create(AOwner);
> FDoubleItems := TStringList.Create;
> end;
>
> Item에 데이터를 추가하면 다음과 같은 error 발생합니다.
> Access violation at address 4139FB2 in moudule 'VCL30.DPL'. Read of address FFFFFFFF.
>
> 어떻게 해결해야 하나요 ??
>
> 파일 첨부합니다.
>
안녕하세요 ^^; 괴물입니다.
혹시 다음과 같이 해서 액세스가 바이얼레이션한다는건지(?) 모르겠네요..
TComDoublue = class(TComboBox)
private
FDoubleItems: TStrings;
:
published
property DoubleItems: TStrings read FDoubleItems write FDoubleItems;
:
end;
TStrings용 프로퍼티를 사용하는 컴포넌트를 몇개 찾아보니
(TStringsTCustomComboBox나 TOpenDialogBox등..) Assign 메서드를 사용했군요
^^;
TComDouble = class(TComboBox)
private
FDoubleItems: TStrings;
procedure SetDoubleItems(Value: TStrings);
published
property DoubleItems: TStrings read FDoubleItems write SetDoubleItems;
end;
implementation
constructor TComDouble.Create(Aowner: TComponent);
begin
inherited Create(AOwner);
:
FDoubleItems := TStringList.Create;
end;
:
procedure TComDouble.SetDoubleItems(Value: TStrings);
begin
if FDoubleItems <> Value then
begin
FDoubleItems.Assign(Value);
// Do something;
end;
end;
:
destructor TComDouble.Destroy;
begin
FDoubleItems.Free;
inherited Destroy;
end;
ps.
이 게시판에도 TString(Abstract Type)에 대한 내용이 있습니다.
검색해보세요.