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

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:\になるようにしたいです。
宜しくお願いします。

 Réponse acceptée

Jiro Doke
Jiro Doke le 26 Fév 2019
Modifié(e) : Jiro Doke le 26 Fév 2019

1 vote

カスタム設定を使って、パラメーターを記憶させるのが良いと思います。
% カスタム設定が定義されているか確認
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 commentaires

qrqr
qrqr le 26 Fév 2019
ありがとうございます。
以下のコードで試したところエラーが発生しました。
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)
if ispref('MyPreferences','LastUigetfileFolder')
folder = getpref('MyPreferences','LastUigetfileFolder');
else
folder = 'C:\';
end
[FileName1,PathName1] = uigetfile( ...
{ '*.*', '全てのファイル (*.*)'}, ...
'Pick a file','MultiSelect', 'on',folder);
% 選択されたフォルダーをカスタム設定に記憶させる
setpref('MyPreferences','LastUigetfileFolder',PathName1)
csv_gas = strcat(PathName1,FileName1);
assignin('base', 'gas', gas);
set(handles.edit1,'String',gas);
エラー: uigetputfile_helper/checkString (line 362)
Filename は文字列でなければなりません。
エラー: uigetputfile_helper/parseArguments (line 157)
defaultfilepath = checkString(defaultfile, 'Filename');
エラー: uigetputfile_helper (line 27)
[dialog_filter, dialog_title, dialog_filename, dialog_pathname,
dialog_multiselect] = parseArguments();
エラー: uigetfile (line 127)
[filename, pathname, filterindex] = uigetputfile_helper(0, varargin{:});
エラー: csvtxt_file_read>pushbutton1_Callback (line 89)
[FileName1,PathName1] = uigetfile( ...
エラー: gui_mainfcn (line 96)
feval(varargin{:});
エラー: csvtxt_file_read (line 42)
gui_mainfcn(gui_State, varargin{:});
エラー:
@(hObject,eventdata)csvtxt_file_read('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Jiro Doke
Jiro Doke le 26 Fév 2019
もしかして uigetfile でキャンセルボタンとか押されたでしょうか。
エラーチェックを追加しまして上のコードを修正したので、もう一度この回答のコードを試してみてください。
qrqr
qrqr le 26 Fév 2019
[もしかして uigetfile でキャンセルボタンとか押されたでしょうか。]
→  キャンセルボタン押しました。
修正頂いたコードで試したらできました。(キャンセルボタン押してもエラーは起こりませんでした)
とても助かりました。ありがとうございます。
Jiro Doke
Jiro Doke le 26 Fév 2019
解決できてよかったです!
因みに、キャンセルボタンを押した場合フォルダー名はキャンセルされたという事を示すために数字の0として戻ってきます。その数字が誤って次回のフォルダー名として使われていたのが原因です。修正後のコードでは数字として戻ってきた場合はフォルダーを記憶しないようなエラーチェックを加えてあります。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 環境と設定 dans Centre d'aide et File Exchange

Produits

Version

R2013b

Community Treasure Hunt

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

Start Hunting!