회사의 각 부서별 코드북을 만들고 있어요.
에디트 박스에서 자동으로 생성되는 코드와
필드값을(지사,부서명) 키입력해서 아래와 같이
드리뷰로 생성하여 (추가,삭제,수정)을 하려고 합니다.
제주지사(A10)
영업부(100)
제1영업부(100)
제2영업부(110)
...
관리부(200)
하나(100)
둘(110)
셋(120)
경기지사(B10)
영업부(100)
제1영업(110)
제2영업(120)
총무부(300)
기획(100)
조정(110)
업무(120)
와 같이 분류하여
부서명과 코드를 트리로 표시하려 하는데....
문1) 제주지사의 제1영업과 경기지사의 제1영업을 각각 부르는 방법은
문2) 트리구조의 각 아이템을 부르고, 또 경로를 알수있는지.
예) *표시된 조정이 제주지사간 경기지사인가를 구분하는 법
문제 1) 예제
이 함수를 응용하시면 어떤 노드도 찾으실 수 있을겁니다...
function TForm1.FindNode(Branch, Part: string): TTreeNode;
// Branch -지사, Part - 부
var
I: Integer;
BranchNode: TTreeNode;
begin
Result := nil;
for I := 0 to TreeView1.Items.Count - 1 do
if Pos(Branch, TreeView1.Items[I].Text) <> 0 then
begin
BranchNode := TreeView1.Items[I];
Break;
end;
for I := 0 to BranchNode.Count - 1 do
if Pos(Part, BranchNode.Item[I].Text) <> 0 then
begin
Result := BranchNode.Item[I];
Break;
end;
end;
문2) 예제
아이템을 부를땐 TTreeView의 Items프로퍼티나 TTreeNode의 Item프로프티를 이용
하시면 됩니다. 경로를 지정하시는 방법은 여러가지가 있겠지만 디렉토리 패스를
지정하는 방식으로 만들어 보았습니다...
예) 제주지사(A10) 영업부(100)제1영업부(100) <== 이런식으로요...
function TForm1.GetNodePath(Node: TTreeNode): string;
var
TempNode: TTreeNode;
begin
TempNode := Node;
Result := '';
while TempNode <> nil do
begin
Result := TempNode.Text + '' + Result;
TempNode := TempNode.Parent;
end;
end;