いつも大変お世話になっております。福島です。
TreeViewのことで教えて頂きたいのですが・・・
社員登録で3階層(部・課・社員)のツリー構造をなす
TreeViewを作成しましたが、1社員の情報を変更したときに
状態を反映するためにTreeView全体を消去してから書き直しています。
(例えば)課や部を移動したとき
しかし表示する数が多くなってきた為に再構築に非常に時間が
かかってしまい実用的でなくなってしまいました。
あるノードの下だけ変更(削除)する方法はありますか?
今は、「treeView.Nodes.Clear」を使用して全体を削除して
再度ツリーを作成しています。
aNode(部)
bNode(課)
cNode(社員)
のようになっています。
宜しくお願い申し上げます。
Windows2000SP2 + VB6.0SP4
No.1
- 回答日時:
VBのコントロールにはメソッドがないようなのですが
C++ではマクロの TreeView_DeleteItem を使用すれば可能なようです。
英語のMSDNにしか記載されてないようですが^^;
http://msdn.microsoft.com/library/en-us/shellcc/ …
内部的に TVM_DELETEITEM メッセージをツリービューに送る様なので、SendMessageで代用出来きます。
http://msdn.microsoft.com/library/en-us/shellcc/ …
lParam にはHitTestの結果を渡せばよいと思います。
http://msdn.microsoft.com/library/en-us/shellcc/ …
VC付属の commctrl.h には以下のように宣言されています
#define TV_FIRST 0x1100 // TreeView messages
#define TVM_DELETEITEM (TV_FIRST + 1)
#define TVM_HITTEST (TV_FIRST + 17)
試してないので動かなかったらごめんなさい。
参考URL:http://www.kumei.ne.jp/c_lang/sdk2/sdk_114.htm
貴重なアドバイスをありがとう御座います。
以前にDOS時代のCやC++はやったんですが
Windowsになってからちょっと離れていた為に
最近ではVisual言語についていけなくて・・・(涙)
いまの時代VCは当たり前なんですよね。
やっぱり勉強しなければ!
頑張ります。ありがとう御座いました。
No.2ベストアンサー
- 回答日時:
サンプルです。
TreeViewとコマンドボタンが必要です。
NodesはNodeオブジェクトのコレクションです。
As Collection と言う宣言を使用したことがある人ならわかると思うのですが、未経験者であれば、これを機に覚えることをお勧めします。
Collectionは登録時にKeyを仕込むことができます。
サンプルで言うと
.Add "会社", tvwChild, "経理部", "経理部"
というのは
.追加 "親となる物のキー", 自分は子, "キー文字列", "TreeViewに表示するテキスト"
となります。そのキーは重複することの無いように登録をしなければいけません。
そうすることによりキーでNodesコレクションからNodeオブジェクトの情報を取得することができます。
それを指定してあげると、削除できます。
また、キー文字列を指定しないでも、TreeViewの表示順にIndex値を持ちますので、それを利用してもオブジェクトの指定ができます。
注意すべきはNodesコレクションに追加するときは、キーには数値を登録できないことです。
"1"とかは無理ですが、"1A1"などは可能です。
Option Explicit
Private Sub Command1_Click()
Dim nodWork As Node
Dim lngSts As Long
With Me
With .TreeView1
Set nodWork = .SelectedItem
If nodWork Is Nothing Then
Call MsgBox("未選択なので、削除無効")
Exit Sub
End If
lngSts = MsgBox("[" & nodWork.Text & "]を削除しますか?", vbOKCancel)
If lngSts = vbCancel Then
Exit Sub
End If
'選択中のノードを削除
.Nodes.Remove nodWork.Key
'下のような表現でもよい(キー文字列かIndex文字列を渡す)
'.Nodes.Remove nodWork.Index
End With
End With
End Sub
Private Sub Form_Load()
With Me
With .TreeView1
With .Nodes
'NODEを追加
'これについては説明不要とします。。。
.Add , , "会社", "会社"
.Add "会社", tvwChild, "経理部", "経理部"
.Add "経理部", tvwChild, "財務課", "財務課"
.Add "経理部", tvwChild, "購買課", "購買課"
.Add "会社", tvwChild, "総務部", "総務部"
.Add "総務部", tvwChild, "総務課", "総務課"
.Add "総務部", tvwChild, "用務課", "用務課"
.Add "会社", tvwChild, "営業部", "営業部"
.Add "営業部", tvwChild, "法人営業課", "法人営業課"
.Add "営業部", tvwChild, "お客様サービス課", "お客様サービス課"
End With
'経理部が初期表示で見えるようにする(同時に、並列の総務部や営業部などの部も見えるようになる)
.Nodes("経理部").EnsureVisible
'下のような表現でもよい(TreeView内において[経理部]は Index=2だから)
'.Nodes(2).EnsureVisible
End With
.Command1.Caption = "削除"
End With
End Sub
丁寧にご指導頂きありがとう御座いました。
とても勉強になりました。やってみましたが
上手くいきました。ポイントはRemoveだったの
ですね。分かってしまえば簡単なんですが・・・
それを調べるのが下手なんでしょうね。私は。
一生懸命MSDNと向き合っているつもりなのですが!
本当にありがとう御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(税金) 消費税脱税疑惑、労働基準法、コロナ給付金3点について 3 2022/03/29 12:06
- LINE ラインの削除方法、完全に新しくしたい。 2 2023/08/07 12:25
- 邦画 邦画の「製作委員会」の構成会社を、試写会以前に知る方法はあるでしょうか 1 2023/06/12 09:58
- YouTube YouTubeはTV番組、映画の違法アップロードに対して収益金を支払っているか否か? 1 2022/04/30 20:12
- JavaScript 階層別の組織図の自動作成について 1 2022/10/26 13:42
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- 会社・職場 パワハラ、モラハラについて 2 2023/04/14 05:47
- 政治 日本で訴訟件数が少ないのは、自民党とビッグモーターが詐欺組織だからですか? 2 2023/07/27 11:30
- 仕事術・業務効率化 使用中のソフトで、インボイス制度に対応する為の作業料が30万以上。普通? 4 2023/06/15 21:26
- 飲み会・パーティー 日本人でテキーラショットを30杯も飲める人って本当にいるんですか? 1 2022/05/08 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プラス(足す)キーはどうやっ...
-
キーボードがCtrlキーが押され...
-
Ctrlキー+HomeキーでセルA1へ移...
-
メールアドレスの作成の際上バ...
-
Scroll Lockが勝手に有効になる...
-
「か」を数字で表すとどうなり...
-
矢印キーのロック解除方法
-
プーリーのキーが外れない
-
パソコンの青い線枠が消えませ...
-
PgDn、PgUpの設定が急に変わっ...
-
GateWayのBIOSの設定変更方法
-
BackSpaceキーを押しても・・・...
-
VSCodeで上書きモードにならない
-
キーボードの上部にあるランプ...
-
エクセルで複数行に散らばった...
-
PDF-XChange Viewer 全画面表示...
-
NumLockが勝手に切り替わる?
-
Wordで繰り返しのショートカッ...
-
hpのelitebook使ってますが最近...
-
(word) 文字列の上に線を引く方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プラス(足す)キーはどうやっ...
-
キーボードがCtrlキーが押され...
-
「か」を数字で表すとどうなり...
-
矢印キーのロック解除方法
-
Scroll Lockが勝手に有効になる...
-
Ctrlキー+HomeキーでセルA1へ移...
-
パソコンの青い線枠が消えませ...
-
メールアドレスの作成の際上バ...
-
PgDn、PgUpの設定が急に変わっ...
-
「(アクサングラーブ)キー」と...
-
プーリーのキーが外れない
-
左右の表のキー位置を合わせたい
-
(word) 文字列の上に線を引く方法
-
エクセルで複数行に散らばった...
-
Shiftキーのはめ方を教えてくだ...
-
hpのelitebook使ってますが最近...
-
VSCodeで上書きモードにならない
-
Access2010 Enterで次テキスト...
-
NumLockが勝手に切り替わる?
-
PDF-XChange Viewer 全画面表示...
おすすめ情報