Bonjour,
Je rencontre trois problèmes avec les tableaux créés à l'aide de la fonction uitable:
- j'ai un tableau avec un nombre de lignes fixe et un nombre de colonnes qui dépend d'une entrée utilisateur (via une edit box), compris entre 2 et 5. Je veux que quand l'utilisateur change le nombre de colonnes le tableau se redimensionne correctement. Pour faire cela j'utilise les propriétés 'Position' et 'extent' du tableau dans le callback de l'edit box:
Bizzarrement, pour que cela fonctionne je dois entrer 2 fois de suite la valeur de colonnes souhaitée dans l'edit box; par exemple taper '3' puis appuyer 2 fois de suite sur entrée.Si je ne tape qu'une fois le cadre général du tableau ne rejoint pas le cadre de l'extent. D'autre part si je passe part le debugger, en vérifiant chaque étape une à une le redimensionnement se fait correctement en une seule fois....
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 function Nbre_Modes_Callback(hObject, eventdata, handles) %Lecture du nombre de colonnes nbre_modes=str2double(get(hObject,'String')); %Ecriture de la cellule des entetes de colonnes for i=1:nbre_modes Noms_cols{i}=['Mode ',num2str(i)]; end %On modifie le tableau en conséquence set(handles.Table_Initial,'ColumnName',Noms_cols) set(handles.Table_Initial,'data',handles.data(:,1:nbre_modes)) %Correction de l'affichage position=get(handles.Table_Initial,'Position'); extent=get(handles.Table_Initial,'Extent'); set(handles.Table_Initial,'Position',[position(1:2),extent(3:4)]) %Sauvegarde du nombre de modes handles.nbre_modes=nbre_modes; guidata(hObject,handles);
J'ai l'impression qu'en fait matlab ne rafraichit pas la valeur de l'extent du tableau avec les nouvelles données avant que le code soit entièrement exécuté, d'où la nécessité de taper 2 fois. Y a t il un moyen de ne pas avoir a taper 2 fois entrée (c'est un problème mineur mais au moins je le saurais...).
-Dans un autre GUI j'ai un tableau qui correspond à une liste d'éléments (1 colonne, un nombre variables de ligne); a l'aide d'un pushbutton 'up' et un 'down' l'utilisateur peut, après avoir cliqué sur un élément de la liste, baisser ou augmenter d'un cran son ordre dans la liste. Le code fonctionne mais je n'arrive pas a faire en sorte de garder surligné l'élément séléctionné et déplacé: une fois déplacé le surlignage disparait (et ceux bien que je programme sa sélection pour des clics successifs).
Sur Matlab Central j'ai trouvé ce dialogue:
http://blogs.mathworks.com/desktop/2...-with-uitable/
Donc en attendant une éventuelle évolution est-ce que quelqu'un voit une alternative pour arriver à mes fins?# MooS replied on November 6th, 2008 at 07:43 UTC :
Hello,
Is it posible to highlight (select) a cell using the object handle of the uitable (e.g. by commands in the ‘base’ workspace). I have two figures, one with the table and one with a surface. I would like to show which point in the surface matches to the cell in the uitable by clicking in the surface….
MooS
# Ken replied on November 6th, 2008 at 15:15 UTC :
Hi MooS,
There is not currently a way to programmatically set the selection in a uitable. Please submit an enhancement request here.
-Ken
-Toujours dans le même tableau, celui ci à une taille fixée par nécessité et la liste d'éléments dépasse généralement sa taille. L'utilisateur doit donc utilise la barre de scroll pour descendre faire sélection si besoin est. Mais une fois qu'il change la position de l'élément dans la liste, la scroll bar du tableau revient à sa position initiale ce qui est assez déroutant l'utilisateur ne voit plus sa sélection et doit re-scroller vers le bas pour vérifier que l'ordre a bien été changé. Toujours sur Matlab Central, même discussion j'ai vu:
Donc, même question que précédemment, quelqu'un voit-il un moyen de contourner le problème??# Ken replied on April 17th, 2009 at 13:54 UTC :
Hi Phillip,
Unfortunately, programmatic scrolling of a uitable is not supported yet. I’ve created an enhancement request for this.
-Ken
Merci pour votre aide!
Bruno





Répondre avec citation






Partager