Matlab - Problemilla con un Popup menu y var globales

 
Vista:

Problemilla con un Popup menu y var globales

Publicado por Pedro (21 intervenciones) el 15/10/2007 10:36:13
Haber como lo explico, utilizo un pop-up menu para establecer en el string de unos edit text una serie de valores, ahora, almaceno los valores de los edit text en un puntero y finalmente, al final de archivo m, los defino como variables globales, mi problema está en que los valores que me almacena no son los valores que le corresponden, aqui pongo la programción que he utilizado
este es el pop menu
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
switch val
case 2
set(handles.uno,'String', '0.24');
set(handles.dos, 'String', '0.67');
set(handles.tres, 'String', '0.008');
set(handles.cuatro, 'String', '0.086');
set(handles.cinco, 'String', '0.06');
set(handles.seis, 'String', '6.0');
set(handles.siete, 'String', '20.0');
set(handles.ocho, 'String', '0.20');
set(handles.nueve, 'String', '0.50');
set(handles.diez, 'String', '0.62');
set(handles.once, 'String', '0.8');
set(handles.doce, 'String', '0.4');
set(handles.trece, 'String', '3.0');
set(handles.catorce, 'String', '0.03');
set(handles.quince, 'String', '0.8');
set(handles.dieciseis, 'String', '1.0');
set(handles.diecisiete, 'String', '0.4');
set(handles.dieciocho, 'String', '0.08');
set(handles.diecinueve, 'String', '0.15');
case 3
set(handles.uno,'String', '0.24');
set(handles.dos, 'String', '0.67');
set(handles.tres, 'String', '0.08');
set(handles.cuatro, 'String', '0.086');
set(handles.cinco, 'String', '0.06');
set(handles.seis, 'String', '3.0');
set(handles.siete, 'String', '20.0');
set(handles.ocho, 'String', '0.20');
set(handles.nueve, 'String', '0.50');
set(handles.diez, 'String', '0.2');
set(handles.once, 'String', '0.8');
set(handles.doce, 'String', '0.4');
set(handles.trece, 'String', '1.0');
set(handles.catorce, 'String', '0.01');
set(handles.quince, 'String', '0.3');
set(handles.dieciseis, 'String', '1.0');
set(handles.diecisiete, 'String', '0.4');
set(handles.dieciocho, 'String', '0.04');
set(handles.diecinueve, 'String', '0.0');
end

guidata(hObject, handles);

esta es la definición de las variables globales
global a_conf
global b_conf
global c_conf
global d_conf
global e_conf
global f_conf
global g_conf
global h_conf
global i_conf
global j_conf
global k_conf
global l_conf
global m_conf
global n_conf
global o_conf
global p_conf
global q_conf
global r_conf
global s_conf

a_conf=handles.uno
b_conf=handles.dos
c_conf=handles.tres
d_conf=handles.cuatro
e_conf=handles.cinco
f_conf=handles.seis
g_conf=handles.siete
h_conf=handles.ocho
i_conf=handles.nueve
j_conf=handles.diez
k_conf=handles.once
l_conf=handles.doce
m_conf=handles.trece
n_conf=handles.catorce
o_conf=handles.quince
p_conf=handles.dieciseis
q_conf=handles.diecisiete
r_conf=handles.dieciocho
s_conf=handles.diecinueve
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemilla con un Popup menu y var globales

Publicado por Kike (304 intervenciones) el 15/10/2007 16:26:00
¿Cuáles son los valores que se supone que deberían ser almacenados por las variables globales?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemilla con un Popup menu y var globales

Publicado por pedro (21 intervenciones) el 15/10/2007 16:43:43
Los valores que deben que quiero que queden almacenados son los de 0,24, 0,8, ... vamos los que defino con los set del popup_menu, sin embargo, al ver en la pantalla de Matlab los valores que me almacena en las variables globales, son del orden de 30, 240, vamos que no tienen nada que ver, toy dandole vueltas, pero no hay manera , y he probado unas cuantas cosas, agradezco mucho la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemilla con un Popup menu y var globales

Publicado por Kike (304 intervenciones) el 15/10/2007 17:01:08
a_conf guarda un valor decimal (algo como 123.25) que representa al handle del edit1. Para que a_conf almacene la cadena de texto de edit1 debe ser así:
a_conf=get(handles.uno,'String')

Otra forma de almacenar dicha cadena de texo en a_conf es que dentro del switch/case guardes a a_conf con el valor numérico, y luego haces el set del edit:
switch val
case 2,
a_conf=0.24; % me lo estoy inventando, a_conf es un número double
case 3,
a_conf=0.55;
end

% afuera del switch/case hago el set del edit y ahorro unas cuantas líneas de
%código porque no lo repito en cada case.
set(handles.uno,'String',num2str(a_conf));
set(handles.dos,'String',num2str(b_conf));

Por otra parte, puedes ahorrar algunas líneas de código escribiendo global sólo una vez y separando por un espacio a las variables, así:
global a_conf b_conf c_conf

Eso sí, debes declarar las variables globales al inicio de la función y luego hacer los set(handles...) y el switch/case
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemilla con un Popup menu y var globales

Publicado por pedro (21 intervenciones) el 16/10/2007 11:23:13
Muchas Gracias, Kike, mi problema se ha resuelto, he utilizado la priemra opción que me diste, la verdad es que la solución era sencila, pero ayer estaba espesito, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar