Bonjour,
J'ai réalisé une interface graphique sur Matlab 6.1 avec un curseur simple ou multiple qui se déplace avec les fléches directionnelles, mais le passage sur Matlab 7.0 rend impossible le déplacement du curseur.
Est-ce un problème de compatibilité?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
function varargout = KeyPressFcn(h, eventdata, handles, varargin)
P=load('parametres');
load('StructSignal');
 
CurrentChar = double( get(gcbf,'CurrentCharacter') );
if ~isempty(CurrentChar) & any( CurrentChar == [28 29 30 31] )
 
    Xlim=get(handles.axes2,'XLim');
    h_line=findobj(handles.axes2,'type','line','Color','b');%handle de ligne
    h_line2=findobj(handles.axes2,'type','line','Color','r'); %définition de h_line3, caractérise le curseur principal
    h_line3=findobj(handles.axes2,'type','line','Color','m');%définition de h_line3, caractérise le curseur double
    %Anciennes valeurs du curseur:
    X=get(h_line2(1),'XData');    
    Y=get(h_line2(1),'YData');
    %Donnees de la courbe fréquentielle
    Xdata=get(h_line(1),'XData');   
    Ydata=get(h_line(1),'YData');
    ind=find(Xdata>=X);
    i=ind(1);
 
    if X<=1 %& ~isempty(i)
        X=1;  
        switch CurrentChar
         case 29     %--> seulement
             delete(h_line(1));%on efface l'ancien curseur
 
             subplot(handles.axes2);hold on;plot(Xdata(i+1),Ydata(i+1),'+r');   %affiche le curseur
             h_line=findobj(handles.axes2,'type','line');
             set(h_line(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i+1)));              %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i+1)));       %affiche la coordonnee y
         end
 
     elseif (X > 1) & (X < Xlim(2)) 
         delete(h_line2(1));%on efface l'ancien curseur principal
         delete(h_line3);
 
         switch CurrentChar    
         case 28   %<--
             subplot(handles.axes2);hold on;plot(Xdata(i-1),Ydata(i-1),'+r');   %affiche le curseur
             h_line2=findobj(handles.axes2,'type','line','Color','r');
             set(h_line2(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i-1)));              %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i-1)));       %affiche la coordonnee y
 
         case 29   %-->
             subplot(handles.axes2);hold on;plot(Xdata(i+1),Ydata(i+1),'+r');   %affiche le curseur
             h_line2=findobj(handles.axes2,'type','line','Color','r');
             set(h_line2(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i+1)));       %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i+1)));       %affiche la coordonnee y
         case 30   %fleche haut pour aller vers droite avec double curseur 
             subplot(handles.axes2);hold on;plot(Xdata(i+1),Ydata(i+1),'+r');   %affiche le curseur
             Xdouble=Xdata(2*i+2);  %% définition du curseur double
             Ydouble=Ydata(2*i+2);
             plot(Xdouble,Ydouble,'+m'); %affiche le curseur double
             h_line2=findobj(handles.axes2,'type','line','Color','r');
             h_line3=findobj(handles.axes2,'type','line','Color','m');
             %text(Xdouble,Ydouble, num2str([Xdouble;Ydouble]),'FontSize',11)
             set(h_line2(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i+1)));       %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i+1)));       %affiche la coordonnee y
         case 31   %fleche bas pour aller vers gauche avec double curseur 
             subplot(handles.axes2);hold on;plot(Xdata(i-1),Ydata(i-1),'+r');   %affiche le curseur
             Xdouble=Xdata(2*i-2);  %% définition du curseur double
             Ydouble=Ydata(2*i-2);
             Xtriple=Xdata(3*i-3);  %% définition du curseur triple
             Ytriple=Ydata(3*i-3);
             Xquatruple=Xdata(4*i-4);  %% définition du curseur quatruple
             Yquatruple=Ydata(4*i-4);
             plot(Xdouble,Ydouble,'+m'); %affiche le curseur double
             plot(Xtriple,Ytriple,'+m'); %affiche le curseur double
             plot(Xquatruple,Yquatruple,'+m');
             h_line2=findobj(handles.axes2,'type','line','Color','r');
             h_line3=findobj(handles.axes2,'type','line','Color','m');
             %text(Xdouble,Ydouble, num2str([Xdouble;Ydouble]),'FontSize',11)
             set(h_line2(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i-1)));       %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i-1)));       %affiche la coordonnee y    
         end
 
 
     elseif X>=floor(Xlim(2)) %& ~isempty(i)
 
         switch CurrentChar
         case 30   %<-- seulement
             delete(h_line(1));%on efface l'ancien curseur
             subplot(handles.axes2);hold on;plot(Xdata(i-1),Ydata(i-1),'+r');   %affiche le curseur
             h_line=findobj(handles.axes2,'type','line');
             set(h_line(1),'MarkerSize',24);
             set(handles.editx,'String',num2str(Xdata(i-1)));              %affiche la coordonnee x
             set(handles.edity,'String',num2str(Ydata(i-1)));       %affiche la coordonnee y
        end
%         
    end
 
end