お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

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




今回のお題は、あるフォルダーにあるリスト項目をドラッグ&ドロップ
で他のフォルダーに移動する処理です。

IniFileに対する処理は移動元のフォルダーに対応するセクションから
移動するデータを削除し、移動先のフォルダーに対応するセクションの
データに追加します。

nifty:FDELPHI/MES/16/1124 のコードに以下を追加して下さい。


// TListView マウスクリックでドラッグ開始
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) and (ListView1.Selected <> nil) then
    ListView1.BeginDrag(False);
end;

// TTreeview上でリスト項目をドラッグ
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  aNode: TTreeNode;
begin
  Accept:= False;
  aNode:= TreeView1.GetNodeAt(X, Y);  // マウスカーソル下のノードを取得
  if aNode = nil then Exit;
  // ドラッグ元が他のフォルダーのリスト項目の場合のみ受け入れる
  Accept:= (Source is TListView) and
    (aNode <> TreeView1.Selected) and (aNode.Level = 1);
end;

// フォルダーがD&Dを受け入れた時の処理
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  aNode: TTreeNode;
  mItem: TListItem;
  Ini: TMemIniFile;
  Folder: string;
begin
  aNode:= TreeView1.GetNodeAt(X, Y);
  mItem:= ListView1.Selected;
  Ini:= TMemIniFile.Create('ファイル名');
  try
    Folder:= TreeView1.Selected.Text;  // 移動元のデータから削除
    Ini.DeleteKey(Folder, mItem.Caption);
    Folder:= aNode.Text;               // 移動先のデータに追加
    Ini.WriteString(Folder, mItem.Caption, mItem.SubItems.CommaText);
    Ini.UpdateFile;                    // ファイルの更新を忘れずに
  finally
    Ini.Free;
  end;
  mItem.Delete;
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