お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"TMemIniFileでデータ入出力(その4)"




今回はユーザーがTTreeViewに新規フォルダーを作成できるようにします。

IniFileに空のセクションを追加することはできないので、このままですと
プログラム終了時に新しいフォルダーは廃棄されます。
新規フォルダーを作成したらすぐに他のフォルダーからデータを移動する
などの処理を合わせて行う必要があります。
(nifty:FDELPHI/MES/16/1127 参照)

以下のコードは nifty:FDELPHI/MES/16/1124 のコードに追加して下さい。
関数ChildIndexOfは、privateなメンバー関数として宣言して下さい。

private
  procedure ChildIndexOf(aNode: TTreeNode; aText: string): Integer;


// 新規フォルダーを作成する
procedure TForm1.Button2Click(Sender: TObject);
var
  n: Integer;
  Id, aCaption: string;
  NewNode: TTreeNode;
begin
  aCaption:= '新しいフォルダ';
  n:= 2;
  Id:= '';
  with TreeView1 do
  begin
    if Selected = nil then Exit;
    if Selected.Level <> 1 then Exit;
    if ChildIndexOf(Selected, aCaption) > -1 then
    begin     // 既に同じ名前のフォルダーがある場合は重複しないよう
      repeat  // ID No.を追加する
        Id:= '(' + IntToStr(n) + ')';
        if ChildIndexOf(Selected, aCaption + Id) = -1 then Break;
        Inc(n);
      until n = 1000;
    end;
    NewNode:= Items.AddChild(Selected, aCaption + Id);
    NewNode.SelectedIndex:= 1;
    Selected.Expand(False);
  end;
end;

// 引数で指定したテキストを持つ子ノードの位置を返す
function TForm1.ChildIndexOf(aNode: TTreeNode; aText: string): Integer;
var
  i: Integer;
begin
  Result:= -1;
  for i:= 0 to aNode.Count - 1 do if aNode.Item[i].Text = aText then
  begin
    Result:= i;
    Break;
  end;
end;


           ○ 心を打つ美しい文書作りは「えるの〜と」 ○
                 http://member.nifty.ne.jp/h-triton/
        Avalon's Friendly Crew #80008  H-Triton (^^) since 1996
 


- FDELPHI  MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/07/04 -

Original document by H-Triton        氏 ID:(QZV11422)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum