windows では、よくファイル一覧画面をだして、ファイルを選択することが可能です。VBAでは、
Application.GetOpenFilenameを使うと簡単にできます。これと同じことをRuby でやるには
どうするといいのでしょうか?
WSHを使う必要があります。
こんな感じです。
require 'win32ole' obj=WIN32OLE.new("MSComDlg.CommonDialog") obj.MaxFileSize =255 obj.Filter = "すべてのファイル (*.*)|*.*|" obj.InitDir ="C:\\" obj.ShowOpen file=obj.FileName wsh = WIN32OLE.new('WScript.Shell')
ActiveScriptRuby
http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/
をインストールした場合、VisualuRubyもインストールするので
FormDesigner(VisualuRuby計画のGUIビルダ)
http://sourceforge.jp/projects/fdvr/
http://vruby.wiki.sourceforge.net/FormDesigner
http://vruby.sourceforge.net/cgi-bin/wiki.cgi?FormDesigner
をダウンロードすると、通常のWindowアプリが作れます。
ファイル一覧ダイアログも使用可能です。
gemをインストールする必要がありますが、
WxRubyというフレームワークを使用することで
ファイル選択のためのダイアログ(FileDialog)を表示することができます
また、WxRubyはWindows以外の環境(MacやLinux)でも利用可能なので
この方法を使えば多くの環境で同じコードを動作させることができます
インストールは以下のコマンドで実行できます
gem install wxruby
以下のコードはテキストファイルまたは任意の種類のファイルを選択して、そのファイル名を標準出力に出力するだけのサンプルです
require 'rubygems' require 'wx' class MyApp < Wx::App def on_init dlg = Wx::FileDialog.new(nil, "ファイルを選択", "", "", "テキスト(*.txt)|*.txt|すべてのファイル(*)|*") if dlg.show_modal==Wx::ID_OK then puts "選択されたファイル: #{dlg.get_path}" else puts "キャンセルされました" end end end MyApp.new.main_loop
ruby/tkを使った例です。
ruby/tk自体は標準ライブラリなのですが、ActiveTclをインストールする必要があります。
http://www.activestate.com/activetcl/downloads/
最新のActiveTcl 8.5.2.0は動かないので、ActiveTcl 8.4.19.0を入れましょう。
うまく動かない場合はC:\Tcl\lib\tcl84.libをソースと同じ所にコピーしてみてください。
require 'tk' lbl=TkLabel.new lbl.text="file name" lbl.pack etr=TkEntry.new etr.pack btnSet=TkButton.new btnSet.text = "File Select" btnSet.command{etr.value = Tk.getOpenFile} btnSet.pack btn=TkButton.new btn.text = "quit" btn.command{exit} btn.pack Tk.mainloop
コメント(0件)