スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#入門 Windowsアプリケーション編 Tree View(1)

今回はTree Viewの紹介です。
それではいつも通り部品をのっけるWindows Formを準備しておきます。
 
open System
open System.Windows.Forms
open System.Drawing
 
let mainForm = new Form(ClientSize = new Size(300,200), Text = "MyComboBox Window")
mainForm.Show() |> ignore
 
Tree Viewのインスタンスを一個作成してフォームにのっけてみます。
 
let myTreeView = new TreeView(Width = 280,Height = 180,Location = new Point(10,10))
mainForm.Controls.Add (myTreeView) 
 
822-1.jpg 
 
プロパティを調べてみます。
 
> myTreeView;;
val it : TreeView =
  System.Windows.Forms.TreeView, Nodes.Count: 0
    {前略
     CheckBoxes = false; // trueにすると、中に表示される項目すべてにチェックボックスがつきます。
     中略
     HideSelection = true; //フォーカスが外に移ったときに選択していたものが、分からないようになります。
     中略
     Nodes = seq [];
     中略
     Scrollable = true; //スクロール可能とするか?
          中略
     TopNode = null;
     後略;}
 
一番大事なのはNodesプロパティでここに、表示する部品(TreeNodeクラスのインスタンス)を登録します。
TreeViewでの一番上の階層を追加することになります。
 
では中身を追加していきます。
 
> let rootNode = new TreeNode(Text = "Root Node")
myTreeView.Nodes.Add (rootNode) |> ignore;;
 
val rootNode : TreeNode = TreeNode: Root Node
 
これで、フォームは下のようになり、 
 
822-2.jpg  
 
 
> myTreeView;;とすると
    前略
    Nodes = seq [TreeNode: Root Node];
    中略
    TopNode = TreeNode: Root Node;
    後略
    
となります。
 
同様に一つ付け加えてみます。
 
> let rootNode2 = new TreeNode(Text = "Root Node2")
myTreeView.Nodes.Add (rootNode2) |> ignore;;
 
val rootNode2 : TreeNode = TreeNode: Root Node2> let rootNode2 = new TreeNode(Text = "Root Node2")
myTreeView.Nodes.Add (rootNode2) |> ignore;;
 
val rootNode2 : TreeNode = TreeNode: Root Node2
 
すると以下のようになり、 
 
822-3.jpg  
> myTreeView;;とすると
    前略
     Nodes = seq [TreeNode: Root Node; TreeNode: Root Node2]; //2つに増えている
    中略
    TopNode = TreeNode: Root Node; //先ほどのまま。Nodesの最初の要素。
    後略
    
となります。
 
通常一番上の階層は「rootという名前をつけて、一つだけ」という場合が多いので、あとから付け加えたノードを取り除いておきます。
 
> myTreeView.Nodes.Remove(rootNode2);;
val it : unit = ()
 
それでは、RootNodeにさらにノードを付け加えて、tree構造を作っていきます。
 
>let rootChildNode1 = new TreeNode(Text = "Root child1")
let rootChildNode2 = new TreeNode(Text = "Root child2")
let rootChildNode3 = new TreeNode(Text = "Root child3")
 
rootNode.Nodes.Add ( rootChildNode1) |> ignore
rootNode.Nodes.Add ( rootChildNode2) |> ignore
rootNode.Nodes.Add ( rootChildNode3) |> ignore;;
 
これでrootNodeに3個の子ノードがつけ加わりました。 
 
822-4.jpg  

先ほどと変化してないようにも、見えますがRoot Nodeの文字の横に+マークが出現しています。
これをクリックすると、3つの子ノードが出てきます。このように隠れている子ノードを、見える状態にすることを「展開する(expand)」といい、逆を「折りたたむ(Collapse)」といいます。
(collapseは「つぶれる, 崩壊する」という意味です)
 
プログラム上から展開するには次のようにします。
> rootNode.Expand();;
val it : unit = () 
 
822-5.jpg 
 
逆に折りたたむには次のようにします。
 
> rootNode.Collapse();;
val it : unit = ()
 
さらにノードを2個作り、これを上から2番目のノードの子ノードとして登録します。
 
>let rootChild2ChildNode1 = new TreeNode(Text = "Root child2 child1")
let rootChild2ChildNode2 = new TreeNode(Text = "Root child2 child2")
 
rootChildNode2.Nodes.Add( rootChild2ChildNode1) |> ignore
rootChildNode2.Nodes.Add( rootChild2ChildNode2) |> ignore;;
 
ExpandAllメソッドを使うと、あるノード以下のノードがすべて展開します。
 
> rootNode.ExpandAll();; 
 
822-6.jpg 
 
 
それでは、rootの2番目の子ノードである rootChildNode2のプロパティを調べてみます。
 
> rootChildNode2;;
val it : TreeNode =
  TreeNode: Root child2
     前略
     FirstNode = TreeNode: Root child2 child1; //Nodesコレクション内の最初の子ノード
     中略
     FullPath = "Root Node\Root child2";//ルート ツリー ノードから現在のツリー ノードまでのパス。
     //連結文字はTreeView コントロールの PathSeparator プロパティに指定されている値が使われる
     
     中略
     IsExpanded = true;
     IsSelected = false;
     中略
     IsVisible = true;
     LastNode = TreeNode: Root child2 child2;//Nodesコレクション内の最後の子TreeNode
     Level = 1;//階層の深さ,ルートは深さ0
     Name = "";
     NextNode = TreeNode: Root child3; //次回解説
     NextVisibleNode = TreeNode: Root child2 child1;
     中略
     Nodes = seq [TreeNode: Root child2 child1; TreeNode: Root child2 child2];
     Parent = TreeNode: Root Node;//親ノード
     PrevNode = TreeNode: Root child1; //次回解説
     PrevVisibleNode = TreeNode: Root child1;
     中略
     Tag = null;
     Text = "Root child2";
     中略
     TreeView = System.Windows.Forms.TreeView, Nodes.Count: 1, Nodes[0]: TreeNode: Root Node;}
 
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。