ソフトウェア/Igor/FileListBox

(1684d) 更新


公開メモ

ファイルの一覧を表示して、ファイル名のダブルクリックで特定の関数を呼び出すライブラリ

ファイル名の一覧を表示する機能と、ダブルクリックで選択されたときに特定の関数を呼び出す機能を提供するライブラリです。

fileFileListBox_2014-01-15.ipf

FileListBox_0.png

もっとも基本的な使い方:

  1. 上記ファイルを C:\Program Files\WaveMetrics\Igor Pro Folder\User Procedures\FileListBox.ipf として保存し、プロシージャウィンドウの一番上に
    #include "FileListBox"
    という行を追加する
    ファイルを適当なところに置いておいて、[ファイル]-[ファイルを開く(F)]-[プロシージャ(P)] から開いても使えるけど、その方法だと FileListBox.ipf ファイルを移動すると使えなくなってしまうのかも

    追記:エクスペリメントファイルと同じフォルダに入れた場合には、
    #include ":FileListBox"
    とすれば良いです。

  2. ファイル名がダブルクリックされたときに実行したい内容を関数として記述する。例えばこんな感じ
    Function DoubleClickCallback(FileName)
    	string FileName
    	printf "'%s' was double clicked!\r", FileName
    end
    当然、本来ならここでファイルを読み込んでグラフを表示するような使い方を想定している。

  3. コマンドラインから上で作った関数名を指定して FileListBox 関数を呼び出す
    FileListBox("DoubleClickCallback")

  4. 表示されたパネルの FilePath の欄にて、内容は空白のまま Enter key を押す

  5. 適当なフォルダを指定して OK

  6. ファイル名をダブルクリックすると上記関数が実行される

  7. パネルはリサイズ可能
    ※ただ、あまりウィンドウを大きくしていると Igor の表示処理がもたついてダブルクリックが効かなくなる不具合が(--;

ちょっと高度な使い方:

  1. データファイルの拡張子を指定して、特定の種類のファイルのみをリストに表示させることができる。
    FileListBox("DoubleClickCallback", FileExt=".dat")

  2. 拡張子はセミコロンで複数指定できる。
    FileListBox("DoubleClickCallback", FileExt=".dat;.txt")

  3. ファイル名一覧に一緒に表示したいファイル情報があるときは、ファイル名から情報をリストにして返す関数を以下のように作って、FileListBox 関数に FileInfoProc として渡せばよい
    function/T FileInfoCallback(FileName)
    string FileName
    	// return file infomations separated with semicolon(s) ";"
    	return "param1;param2;param3"
    end
    としておいて、
    FileListBox("DoubleClickCallback", FileInfoProc="FileInfoCallback")
    表示されたファイル情報のコラム幅はドラッグで変えられる。Alt キーを押しながらドラッグすると幸福になれることも

  4. パネルを表示するときの初期フォルダ名を InitialPath として指定できる
    FileListBox("DoubleClickCallback", InitialPath="C:MyData:")

  5. もちろん、上記すべてを同時に指定しても良い
    FileListBox("DoubleClickCallback", FileInfoProc="FileInfoCallBack", FileExt=".dat", InitialPath="C:MyData:")

質問・コメント





添付ファイル: fileFileListBox_0.png 639件 [詳細] fileFileListBox_2014-01-15.ipf 599件 [詳細]

Counter: 2960 (from 2010/06/03), today: 2, yesterday: 0