GUIでのファイル選択について

21 views (last 30 days)
qrqr
qrqr on 26 Feb 2019
Edited: qrqr on 27 Sep 2019
GUIでファイルを選択する時に、2回目以降は前回開いたファイルパスのところを開くにはどのようにすればできますか?
下はコードの一部です
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on','C:\');
Bagsheet1 = strcat(PathName1,FileName1);
assignin('base', 'Bsheet1', Bsheet1);
set(handles.edit1,'String',Bsheet1);
1回目の時はC:\のファイル画面が開かれますが、これだと2回目以降も同じになります。
例えば1回目のファイル選択でC:\の開かれたファイルからD:\のファイルで選択した時、2回目のファイル選択画面をD:\になるようにしたいです。
宜しくお願いします。

Accepted Answer

Jiro Doke
Jiro Doke on 26 Feb 2019
Edited: Jiro Doke on 26 Feb 2019
カスタム設定を使って、パラメーターを記憶させるのが良いと思います。
% カスタム設定が定義されているか確認
if ispref('MyPreferences','LastUigetfileFolder')
folder = getpref('MyPreferences','LastUigetfileFolder');
if ~ischar(folder)
folder = 'C:\';
end
else
folder = 'C:\';
end
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on',folder);
% 選択されたフォルダーをカスタム設定に記憶させる
if ~isnumeric(PathName1)
setpref('MyPreferences','LastUigetfileFolder',PathName1)
end
  4 Comments
qrqr
qrqr on 26 Feb 2019
[もしかして uigetfile でキャンセルボタンとか押されたでしょうか。]
→  キャンセルボタン押しました。
修正頂いたコードで試したらできました。(キャンセルボタン押してもエラーは起こりませんでした)
とても助かりました。ありがとうございます。
Jiro Doke
Jiro Doke on 26 Feb 2019
解決できてよかったです!
因みに、キャンセルボタンを押した場合フォルダー名はキャンセルされたという事を示すために数字の0として戻ってきます。その数字が誤って次回のフォルダー名として使われていたのが原因です。修正後のコードでは数字として戻ってきた場合はフォルダーを記憶しないようなエラーチェックを加えてあります。

Sign in to comment.

More Answers (0)

Categories

Find more on 環境と設定 in Help Center and File Exchange

Products


Release

R2013b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!