Valeur par defaut uicontrol (matlab guide)

Fermé
weak007 Messages postés 10 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 11 juillet 2005 - 11 juil. 2005 à 10:16
 MooSlim78 - 18 avril 2008 à 13:07
bonjour tout le monde,
J'ai cree un uicontrol style edit grace au GUIDE et j'aimerai etre capable, si l'utilisateur n'entre pas de valeurs dans cette cellule, de specifier une valeur par defaut.

edit1 = str2num(get(hObject,'String'))
if ~(edit1==0 | edit1==1)
set(hObject,'string', 0);
errordlg('please enter 0 or 1','error');
elseif (isnan(edit1))
set(hObject,'string', 0);
end
data = getappdata(gcbf, 'edit1');
data.edit1 = edit1
setappdata(gcbf, 'sched', data);

j'ai essaye par la maniere ci dessus mais cela ne marche pas, il y a t'il un fonction du genre "si la cellule reste vide"????
en vous remerciant
max

3 réponses

Dans le Opening_fct du .m

tu fais set(handles.edit1,'string','X')

guidata(h0bject,handles)
0
Tu dois entrer la valeur par defaut dans le champ tag (ou string, je ne sais plus). Pour trouver ce champ tag (string), tu dois faire click droit sur l'edit text dans guide -> property inspector-> tu remplis le champ vide.

Par ailleur, j ai aussi un problème. Saurais tu m 'aider?
Le voici:

Je dois utiliser Matlab mais j'ai des difficultés à récupérer des données que j'introduis dans les "edit text" de l'interface graphique (GUI). En effet, le message d'erreur ci-dessous apparait:

??? Undefined function or variable 'd'. % d est une variable de mon programme

Error in ==> gui_mainfcn at 75
feval(varargin{:});

Error in ==> GUI2 at 42
gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback.

Pourtant, lors de la creation de l'"edit text", j'ai rempli le champ 'tag' avec le nom de ma variable 'd' de façon à ce que je puisse l'utiliser dans mon programme sous 'd'.

Si tu as des infos, ce serait sympa!
-1
Bonjour,

une astuce qui peut vous être utile. Pour les uicontrol de style edit, il faut les créer avec un texte vide. Je m'explique avec des exemple Scilab (mais cela ne doit pas changer beaucoup sur matlab) :

clear,clc,close();

//On créé une figure :
//Windows size :
Xsize = 500;
Ysize = 300;
//Windows display :
f = figure('figure_name','Exemple','pos',[0 0 Xsize Ysize]);
// Puis on y met un edit :
uicontrol(f,'style','edit','fontsize',12,'pos',[120 Ysize-60 50 20],'Horizontalalignment','center','string','','tag','tag_Nfile_ini');

//On créé une fonction qui va récupérer la valeur entrée et y donner un nom de variable :
function Nfile=Load()
//Pour récupérer l'information de l'édit :
Nfile = evstr(get(findobj('tag','tag_Nfile_ini'),'string')); //evstr me permet de récupérer un nombre entier.
endfunction

//On peux créer un bouton pour charger les informations :
uicontrol(f,'style','pushbutton','pos',[100 Ysize-100 300 20],'string','Load values','callback',"N=Load()");

//---------------------Fin de l'exemple code----------------

Une fois que vous cliques sur le bouton, votre variable N apparait dans votre éditeur de variables.

J'espère que ce petit exemple à pu vous aider.

Un petit problème subsiste : comment avec une fonction à plusieurs sorties (exemple : function [a,b]=Load()) récupérer les deux variables de sorties ? Je pense que c'est juste un problème de syntaxe mais je n'y trouve pas de solution.

Cordialement
-1