안녕하세요
트리뷰에서 이미지를 넣을때....
ImageList1 에 이미지를 각각 0 : '가' 라는 이미지를 1 : '나' 를 2 : '다' 를 이렇게 3개의 이미지를 넣어두었습니다.
트리는
Root
aaa
bbb
ccc 이렇게 만들어 놓았습니다.
Root는 트리뷰를 아예 더블클릭해서 Image index 와 Selected Index 에 값을 직접 2 로 주었습니다.
그리고 트리뷰에서 만약에 aaa라는 노드를 클릭했을때, 원래 이미지 값이 0 이니까..
1로 바꿔서 나타나게 하고 다시 bbb 라는 노드를 선택하면 aaa노드는 다시 0 의 값인 이미지가 나오고 bbb는 1의 이미지 값을 가져야되는데...
여기서 문제가 생겼습니다.
프로그램을 실행하면 Root는 2의 이미지 값을 가지죠....선택해도 계속 2의 이미지를 가
지죠.
그런데..문제는... -.-
aaa 의 노드를 선택하면 바로 1로 바뀌지 않고, 다른 노드를 선택해야지만 1로 바꿔요.
어떻게 하면 바로 선택하면 그 자리에서 이미지가 바뀔 수 있는지 가르쳐 주십시요.
procedure TForm1.TreeView1Click(Sender: TObject);
var
aaa, bbb : string;
begin
aaa := TreeView1.Selected.Text;
bbb := 'Root';
label1.Caption := aaa;
if aaa = bbb then
TreeView1.Selected.ImageIndex := 2
else
begin
TreeView1.Selected.ImageIndex := 1;
end;
end;
노드가 선택이 되면 '나' 그렇지 않으면 '가' 라는 이미지가 나오라는 뜻인 듯...
맞나요?
만약 맞다면 아래와 같이 해 보십시오.
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.StateImages := ImageList;
end;
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
case Node.Expanded of
true : Node.StateIndex := 0;
false : Node.StateIndex := 1;
end;
end;
한 가지 문제는 StateIndex가 0 번째 인 이미지는 적용이 잘 안되는 문제가 혹
생길수도 있습니다. 그럴 경우 0 번째에다 사용하지 않는 이미지를 하나 넣어 두시면
될 것 같군요.
sunny wrote:
> 안녕하세요
> 트리뷰에서 이미지를 넣을때....
> ImageList1 에 이미지를 각각 0 : '가' 라는 이미지를 1 : '나' 를 2 : '다' 를 이렇게 3개의 이미지를 넣어두었습니다.
>
> 트리는
> Root
> aaa
> bbb
> ccc 이렇게 만들어 놓았습니다.
>
> Root는 트리뷰를 아예 더블클릭해서 Image index 와 Selected Index 에 값을 직접 2 로 주었습니다.
> 그리고 트리뷰에서 만약에 aaa라는 노드를 클릭했을때, 원래 이미지 값이 0 이니까..
> 1로 바꿔서 나타나게 하고 다시 bbb 라는 노드를 선택하면 aaa노드는 다시 0 의 값인 이미지가 나오고 bbb는 1의 이미지 값을 가져야되는데...
> 여기서 문제가 생겼습니다.
>
> 프로그램을 실행하면 Root는 2의 이미지 값을 가지죠....선택해도 계속 2의 이미지를 가
> 지죠.
> 그런데..문제는... -.-
> aaa 의 노드를 선택하면 바로 1로 바뀌지 않고, 다른 노드를 선택해야지만 1로 바꿔요.
>
> 어떻게 하면 바로 선택하면 그 자리에서 이미지가 바뀔 수 있는지 가르쳐 주십시요.
>
> procedure TForm1.TreeView1Click(Sender: TObject);
> var
> aaa, bbb : string;
> begin
> aaa := TreeView1.Selected.Text;
> bbb := 'Root';
> label1.Caption := aaa;
>
> if aaa = bbb then
> TreeView1.Selected.ImageIndex := 2
> else
> begin
> TreeView1.Selected.ImageIndex := 1;
> end;
> end;