TreeView上で右クリックして全てのitemを
選択状態にしたいのですがうまくできません。
以下の例ではひとつずつ選択していき
最後のitemを選択して終わってしまいます。
ご教授の程よろしくお願い致します。
ちなみにexpandedの状態は保持して可視できるものを
全て選択できるようにしたいのですがまずは動的な
複数選択の実現が先ですのでこのように質問させて頂きました。
procedure TForm1.allselectClick(Sender: TObject);
var
i:integer;
begin
treeview1.MultiSelect:=true;
for i := 0 to treeview1.Items.Count-1 do
begin
treeview1.Items.Item[i].Selected:=true;
end;
end;
環境は
Borland Developer Studio 2006 Professional
windowsXP proです。
違っていたらゴメンナサイ
var
I, VisibleCount: Integer;
Nodes: array of TTreeNode;
begin
TreeView1.MultiSelect := True;
//
VisibleCount := 0;
SetLength(Nodes,TreeView1.Items.Count);
for I := 0 to TreeView1.Items.Count - 1 do
begin
if TreeView1.Items[I].IsVisible then
begin
Nodes[VisibleCount] := TreeView1.Items[I];
Inc(VisibleCount);
end;
end;
SetLength(Nodes,VisibleCount);
//
TreeView1.Select(Nodes);
end;
TTreeNode.IsVisible ですか?
もしかしてさん
TTreeNode.IsVisibleではありません。
通りすがりさんの例で無事解決できました。
一旦nodesを作ってselextするのですね。
いやー、勉強になりました。
ヘルプを見てもそういう風にするとは
わかりませんでした(^_^;)
この掲示板のおかげで逆引きできて助かってます。
お手数をおかけして申し訳ありませんでした。
路は多い方がいいよね。
with Treeview1 do begin
MultiSelect := True;
MultiSelectStyle := [msShiftSelect, msVisibleOnly];
Items[0].Selected := True;
Select(Items[Items.Count-1], [ssShift]);
SetFocus;
end;
迂回路さんありがとうございます。
こちらは、マウスで操作するのと同様に
最初のitemを選択して最後のあitemの
選択時に(ここがミソかな?)ssShiftで
shiftキーの選択をするということですね。
はずかしながらこのSELECTのヘルプを見たとき
ssShiftの記入方法が[]を使うことが
わかりませんでした。集合ですもんね。
路は多いほうがいいです。
ありがとうご会いました。
ツイート | ![]() |