• Jueves 20 de Febrero de 2025, 20:11

Autor Tema:  Como Definir Handles Programando En Gui  (Leído 2951 veces)

manguztap

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Como Definir Handles Programando En Gui
« en: Lunes 3 de Septiembre de 2007, 02:06 »
0
Hola a todos y de antemano muchas gracias.

Empezare por comentar que estoy realizando un programa por mi cuenta (una simple sumadora) pues recientemente  he empezado a programar en Matlab y la verdad ya he investigado bastante un problema que se me ha presentado, lo describire a continuacion:

Estoy programando la GUI, no utilizo GUIDE.

He generado una figura, tres EDIT text (edit1, edit2 y edit3),y un pushbutton(el cual al presionarlo realiza la suma).

el usuario inserta el primer valor en edit1 y genero su callback, hago lo mismo con edit2  el cual te da el segundo valor, luego al presionar el pushbutton me deberia de dar el resultado de la suma de edit1 + edit2 y lo inserto en edit3 el cual te muestra el resultado, Mi problema es que no se como guardar los valores obtenidos de edit1 y edit2 para luego mandarlos llamar en la funcion de edit3 y poder sumarlos, en pocas palabras no se como guardar el valor de edit1 y edit2 en HANDLES. abajo les dejo mi programa hasta ahora, si pueden copienlo, peguenlo y corranlo para que se den cuenta de mi problema... por favor ayuda!!!!!!




function varargout = sumadora(varargin)

clear,clc,close all;

%%%%%%%% Figura %%%%%%%%

f=figure('visible','on','name','Manuel Guzman','position',[170 150 250 150]);
set(f,'MenuBar','none')
movegui(f,'center');
handles=guihandles(f);
guidata(f,handles);


%%%%%%%%%%%%%%%%%% Creando Cosmetico Visual

x1=uicontrol(f,'style','edit','string','Valor A','position',[20 75 50 20],...
                        'callback',{@valor1}); % Primer valor a ingresar
                   
add=uicontrol(f,'style','text','string','+','position',[75 75 18 18]); % +

x2=uicontrol(f,'style','edit','string','Valor B','position',[98 75 50 20],...
                        'callback',{@valor2}); % Segundo Valor a ingresar
                   
res=uicontrol(f,'style','pushbutton','string','Resultado','position',[90 110 70 30],...
                        'callback',{@Resultado});   %Respuesta (Push button)
                   
eq=uicontrol(f,'style','text','string','=','position',[153 75 18 18]); % =

x=uicontrol(f,'style','edit','string','','position',[175 75 50 20]); %Resultado

c=uicontrol(f,'style','pushbutton','string','Cerrar','position',[10 110 70 30],...
    'Callback',{@Cerrar}); % cerrar programa


%%%%%%%%%%%%%%%%%% Colores, Word sizes entre otros

set(x1,'BackgroundColor','white');
set(x2,'BackgroundColor','white');
set(x,'BackgroundColor','white');
set(res,'FontSize',9);
set(res,'Fontweight','bold')

%%%%%%%%% BackGround color para igualar el color con los buttons

db = get(0,'defaultUicontrolBackgroundColor');
set(f,'Color',db);      

%%%%%%%% Cerrar

    function Cerrar(hObject,eventdata)
    close(gcbf)
    f2=figure('visible','on','position',[200 250 400 100]);
    set(f2,'MenuBar','none');
    x=uicontrol(f2,'style','text','string','ADIOS COBARDON','position',[26 22 350 50]);
    set(x,'FontSize',28);
    set(x,'ForeGroundColor','red');

    end
   
%%%%%%%%%%% Valor 1 = X1 %%%%%%%%%%%%

    function valor1(hObject,eventdata,handles)
   
    V1=str2double(get(hObject,'string'));
        if isnan(V1)
        errordlg('You must enter a numeric value','Bad Input','modal')    
        end
       
handles.valor1=V1;
guidata(hObject,handles);
    end
   
%%%%%%%%%%% Valor 2 = X2 %%%%%%%%%%%%

    function valor2(hObject,eventdata,handles)
    V2=str2double(get(hObject,'string'));
        if isnan(V2)
        errordlg('You must enter a numeric value','Bad Input','modal')    
        end
       
handles.valor2=V2;    
guidata(hObject,handles);
    end
       
%%%%%%%%%%% Resultado %%%%%%%%%%%%

    function Resultado(hObject,eventdata,handles)
 
A=handles.valor1; %%%%%% AQUI ESTA EL PROBLEMA
B=handles.valor2;
r=A+B;

    set(x,'string',str2double®)
        guidata(gcbo,handles);
end
   
end

fa61an

  • Miembro MUY activo
  • ***
  • Mensajes: 100
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #1 en: Lunes 3 de Septiembre de 2007, 21:26 »
0
tu estas almacenando bien los datos

Citar
Funtion valor1
V1=str2double(get(hObject,'string'));    % Transformar valor ingresado y convertido a double
handles.valor1=V1;                             % Almacenar en puntero
guidata(hObject,handles);                    % Salvar datos

inténtalo Cambiando el edit de mostrar resultado por un Static Text entonces te quedaría así :
2 Edit_text, un Static_text y un pushbutton

Entonces los códigos de los dos edit están bien solo le debes poner este código al pushbutton así
Código: Text
  1.  
  2. function pushbutton1_Callback(hObject, eventdata,handles)
  3. A=handles.valor1;
  4. B=handles.valor2;
  5. r=A+B;
  6. set(handles.text3,'String',r);
  7.  

En donde handles.text3. apunta al componente Static text3.

Ademas veo que en tu código pones "x" y ni siquiera has creado esa variable

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #2 en: Martes 4 de Septiembre de 2007, 17:15 »
0
saludos :hola:
 busca en la ayuda el comando get con este puedes obtener los valores de un control

bye

manguztap

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #3 en: Miércoles 5 de Septiembre de 2007, 08:12 »
0
MUCHAS GRACIAS A TODOS MI PROBLEMA SE A RESUELTO, AHORA LE SUBIRE DE NIVEL.

                           GGGRRRAAACCCIIIAAASSS!!!!!!!!!!!!!!!!

fa61an

  • Miembro MUY activo
  • ***
  • Mensajes: 100
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #4 en: Miércoles 5 de Septiembre de 2007, 17:12 »
0
He notado que la gente de este foro, muchas veces se limita a pedir algo y cuando lo resuelve listo gracias, pero no indica como resolvió el problema..


Ojala publique como lo resolvio

manguztap

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #5 en: Jueves 13 de Septiembre de 2007, 09:05 »
0
Perdon por la tardia respuesta pero tienes razon fa61an lo que hice fue lo siguiente: solo declare la variable x como global.

Gracias por tu ayuda   :D

fa61an

  • Miembro MUY activo
  • ***
  • Mensajes: 100
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #6 en: Jueves 13 de Septiembre de 2007, 16:05 »
0
En verdad te funciono solo cambiando eso, o hiciste algún cambio en esta linea

 set(x,'string',str2double®)

 set(x,'string',str2double r) yo creo que debería quedar así....


Y con gusto en ayudarte, ....

manguztap

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Como Definir Handles Programando En Gui
« Respuesta #7 en: Viernes 14 de Septiembre de 2007, 06:53 »
0
No negativo no habia declarado la variable ''X'' como global jajaja, sorry soy nuevo en matlab, pero aprendiendo  :P