スポンサーサイト

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

スポンサードリンク

TTreeViewとフォームの連動

MDIフォームにTTreeViewコンポーネントを配置し、各ノードとMDI子フォームを連動させる必要がでてきたので、
フォームのTagプロパティを使って連動してみました。
「Tag プロパティを使って追加の整数値を格納したり、
 Tag プロパティをコンポーネント参照またはポインタなどの 32 バイト値に型キャストしたりできます。」
となっていますので、ポインタとして利用すればできそうです。


// ============================================================================
// ノードの追加とMDI子フォームの表示
// ============================================================================
procedure TFM_MainForm.NodeAdd(iSiteNo: Integer; iPageNo: Integer);
var
sMsg : String;
rootnode : TTreeNode;
node : TTreeNode;
ChildT : TFM_MDIChild_TOP;//メインの子フォーム
ChildS : TFM_MDIChild_SUB;//サブの子フォーム

begin
if iPageNo = 1 then
begin
// ルートノードの追加
node := TreeView1.Items.Add(nil, 'トップページ');
with node do
begin
ImageIndex := 0;
SelectedIndex := 0;
Selected := True;
end;

// サブフォームを生成する(トップページ用)
ChildT := TFM_MDIChild_TOP.Create(Application);
ChildT.Tag := iPageNo;
ChildT.DataDisp(sMsg);
end else
begin
// サブノードの追加
rootnode := FindRootNode(TreeView1);
node := TreeView1.Items.AddChild(rootnode, 'サブページ');
with node do
begin
ImageIndex := 0;
SelectedIndex := 0;
end;

// 親ノードを展開
node.Parent.Expand(True);

node.Selected := True;

// サブフォームを生成する(サブページ用)
ChildS := TFM_MDIChild_SUB.Create(Application);
ChildS.Tag := iPageNo;
ChildS.DataDisp(sMsg);
end;

// ノードの Data にポインターをセット (Integer型をPointer型にキャスト)
node.Data := Pointer(iPageNo);
end;

// ============================================================================
// ノードクリック
// ============================================================================
procedure TFM_MainForm.TreeView1Click(Sender: TObject);
var
ii : Integer;
node : TTreeNode;

begin
// nul ではないことを確認
if Assigned(TreeView1.Selected) then
begin
// 選択しているノードを取得
node := TreeView1.Selected;
if node.Data = nil then exit;

// Node.Dataに格納しているインデックスからサブフォームを列挙する。
for ii := 0 to MDIChildCount - 1 do
begin
if MDIChildren[ii].Tag = Integer(Node.Data) then
begin
MDIChildren[ii].Show;
Break;
end;
end;
end;
end;


追加したノードに対して、ひとつの子フォームを割り当てていきますので、
子フォーム内に処理を記述しておけば、
共通処理を行えます。

ランキングに参加しています。
クリックのご協力をお願い致します。
いつもありがとうございます。
にほんブログ村 IT技術ブログへ
にほんブログ村

スポンサードリンク

コメントの投稿

非公開コメント

スポンサードリンク
最新記事
カテゴリ
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

月別アーカイブ
激安特価情報
Amazonタイムセール
楽天市場タイムセール
Yahoo出店記念セール
NTT-X Store 激安特価!
激安家電のGENO PLUS
コストコ・イケアの通販
つけたまま眠れるファンデ
家電品を安値で買うならこちら!
ケーズデンキ
ベルメゾンアウトレット
激安ブランドコスメ 週末セール
モバコレ SALE
au Brand Garden
アウトレットモール BRANDELI
ブックオフオンラインのオトナ買い
ビッグカメラ◆週末特別セール
ソフマップ 中古・アウトレット
【宿代全額ポイントバック】夏休み早期予約キャンペーン
ネットプライス 送料294円
イオンモールオンライン
EDIONネットショップ
最新コメント
天気予報

-天気予報コム- -FC2-
カウンター
検索フォーム
リンクに表示されるテキスト
ランキング参加中
クリックしていただけると、 こまつもとは大変嬉しいです。



人気ブログランキングへ

ランキングに参加しています。 クリックのご協力をお願い致します。 いつもありがとうございます。 にほんブログ村 通販ブログへ
ブログランキング・にほんブログ村へ
にほんブログ村 IT技術ブログ ソフトウェアへ
にほんブログ村 ゲームブログへ
にほんブログ村 IT技術ブログへ



人気ブログをblogramで分析

趣味・個人

ランキング

リンクリックブログランキング

私を登録 by BlogPeople



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