키워드를 저장하는 클래스
[목차(도우미)]
트리뷰(TreeView)를 이용하여 SQL 검색의 조건을 구성하고자 한다.
델파이 라이브러리의 TStringList는 한가지의 문자열을 저장하므로 키워드(Keyword)와 상세(Detail)를 저장하기 어렵다. 그래서 키워드와 상세를 저장하는 비표시 컴포넌트(non-visual Component)를 작성하게 된다.
흔히 사용되는 경우는
Key :string;
Detail:string;
의 구조체(Structure, Record)를 정의하여 배열을 사용하는 것이다.
클래스(Class)를 사용하는 경우라면 두개의 필드(Field, member variable)를 클래스로 정의하여 클래스를 컬렉션(Collection) 정의 하는 것이다. 컬렉션을 사용하는 것은 리스트(TList)를 사용하는 것이 간편하다.
(집주위의 이름모를 꽃: 평소에 무심코 지나가는 꽃도 확대하여 자세히 보면 아주 아름다움이 감추어져 있다.)
여기서는 기존의 스트링리스트(TStringList)를 계승하여 클래스를 확장하여 범용성을 부여하는 것으로 구현한다.
보통의 스트링리스트처럼 취급하되 상세부분(Detail)은 Update 메소드를 이용하여 저장한다. 그리고 상세부분을 읽어들일 때는 스트링리스트의 사용법과 유사한 속성을 제공한다.
예)
FList.Strings[K] --- Key의 접근
FList.Details[K] --- Detail의 접근
델파이 라이브러리의 TStringList는 한가지의 문자열을 저장하므로 키워드(Keyword)와 상세(Detail)를 저장하기 어렵다. 그래서 키워드와 상세를 저장하는 비표시 컴포넌트(non-visual Component)를 작성하게 된다.
흔히 사용되는 경우는
Key :string;
Detail:string;
의 구조체(Structure, Record)를 정의하여 배열을 사용하는 것이다.
클래스(Class)를 사용하는 경우라면 두개의 필드(Field, member variable)를 클래스로 정의하여 클래스를 컬렉션(Collection) 정의 하는 것이다. 컬렉션을 사용하는 것은 리스트(TList)를 사용하는 것이 간편하다.
(집주위의 이름모를 꽃: 평소에 무심코 지나가는 꽃도 확대하여 자세히 보면 아주 아름다움이 감추어져 있다.)
여기서는 기존의 스트링리스트(TStringList)를 계승하여 클래스를 확장하여 범용성을 부여하는 것으로 구현한다.
CKeywordList = class(TStringList)
private
FDetail:TStringList;
function GetDetail(Index:integer) : string;
procedure SetDetail(Index: integer; const S:string);
public
constructor Create;override;
destructor Destroy;override;
procedure Update(const Key:string; const Detail:string);
function Add(S:string);override;
property Details[Index:integer]:string read GetDetail write SetDetail;
end;
private
FDetail:TStringList;
function GetDetail(Index:integer) : string;
procedure SetDetail(Index: integer; const S:string);
public
constructor Create;override;
destructor Destroy;override;
procedure Update(const Key:string; const Detail:string);
function Add(S:string);override;
property Details[Index:integer]:string read GetDetail write SetDetail;
end;
보통의 스트링리스트처럼 취급하되 상세부분(Detail)은 Update 메소드를 이용하여 저장한다. 그리고 상세부분을 읽어들일 때는 스트링리스트의 사용법과 유사한 속성을 제공한다.
예)
FList.Strings[K] --- Key의 접근
FList.Details[K] --- Detail의 접근
이것은 해시테이블(Hash table)과도 유사한 개념으로 볼수 있는데 Key정보가 많지 않으므로 해시테이블을 쓰지 않았다. 해시테이블에 관하여는 차후 검토하기로 한다.
관련된 내 블로그:
'연구개발 이야기' 카테고리의 다른 글
소스코드 리뷰에 관하여 (1) | 2010.05.21 |
---|---|
[연구]GUI로의 감성공학적 접근 (0) | 2010.05.20 |
[연구] 화면 전환 효과에 관하여 (0) | 2010.05.20 |
[연구] 필터 조건을 선택하는 컴포넌트 (0) | 2010.05.20 |