IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

GUIDATA GUIHANDLES [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut GUIDATA GUIHANDLES
    Bonjour je suis débutant en interfaces graphiques sur matlab et j'ai des gros problèmes.
    Je veux créer une interface graphique pour du traitement de l'image avec la méthode GUIDATA GUIHANDLES.
    Cependant j'ia déjà de gros problème à juste afficher une image en appuyant sur un bouton.

    je crée les boutons sans problèmes

    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
    % Création de l'objet Figure
    figure('units','pixels',...
        'position',[50 80 800 600],...
        'color',[0.753 0.753 0.753],...
        'numbertitle','off',...
        'name','Logiciel de decoupe d image médicale',...
        'menubar','figure',...
        'tag','interface');
     
    % Création de l'objet Uicontrol Pushbutton Load
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'position',[0.05 0.8 0.15 0.05],...
        'string','Load image',...    
        'callback',@load,...
        'tag','Load_image');
     
    % Création de l'objet Axes 1
    axes('units','pixels',...
        'position',[0.3 0.3 0.5 0.5],...
        'tag','axe1');
    mais après je ne vois pas comment faire
    je pensais à quelque chose comme ca mais ca ne marche pas du tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function load(obj,event)
     
    % Récupération des données stockées dans les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    data=guidata(gcbf);
     
    [filename, pathname, filterindex] = uigetfile('*.jpg', 'Pick an JPG-file');
    image_loaded = strcat(pathname, filename)
    mais là une fois que j'ai l'adresse de l'image à afficher dans im, je ne vois pas du tout quoi faire avec....d'abord un imread je suppose mais apres..
    j'ai essayé avec set, plot, imshow...
    et pas moyen de trouver la réponse sur le forum....

    quelqu'un aurait il la solution (avec cette méthodes ( sans variables globales ni fonction imbriquées)) ou un tutorial plus approfondi que ceux fournis par developpez.com ...?

    PS : à quoi correspondent les argument des fonctions callback?

    merci!!

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Bonjour,

    Tout d'abord je te conseillerais de changer le nom de ta sous-fonction, LOAD étant une fonction de MATLAB.
    Truc : Pour vérifier qu'une fonction n'est pas déjà utilisée par MATLAB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    which <nom> %solution 1
    help <nom> %solution 2
    Les arguments des fonctions callback : franchement je n'ai jamais creusé la question, je ne m'en sers pas.
    Il me semble que obj est le handle de l'objet dont c'est le callback, et que event c'est rien, et que c'est en prévision de futures versions de MATLAB.

    Pour le nom du fichier, plutôt que STRCAT, je te conseille d'utiliser FULLFILE (qui est fait pour).

    Pour l'image tes idées semblent bonnes, qu'est-ce que tu n'arrives pas à faire avec imread ?
    Pour l'affichage IMSHOW devrait fonctionner bien que dans un 1er temps j'utiliserais la fonction IMAGE.

    Par contre tu parles de la méthode GUIDATA, GUIHANDLES mais on ne voit appraitre qu'un guidata dans le code que tu as fourni : c'est normal ?
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    oui avec "image" ça marche mais c'est pas codé très proprement j'ai l'impression : pas d'objet figure axe sur lequel on écrit, enfin pas déclaré au début du moins!!

    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
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function gui_guidata_guihandles
     
    % Création de l'objet Figure
    handles(1)=figure('units','pixels',...
        'position',[300 300 800 600],...
        'color',[0.753 0.753 0.753],...
        'numbertitle','off',...
        'name','Logiciel de decoupe d image médicale',...
        'menubar','figure',...
        'tag','interface');
     
    % Création de l'objet Uicontrol Pushbutton Load
    handles(2) = uicontrol('style','pushbutton',...
        'units','normalized',...
        'position',[0.05 0.8 0.15 0.05],...
        'string','Load image',...    
        'callback',@load_image,...
        'tag','Load_image_tag');
     
    % insertion du fond initial
    image_backgnd=imread ('fond1.jpg','jpg');
    axes('Position',[0 0 1 1]);
    image(image_backgnd);
    axis image;
    axis off; 
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    % Génération de la structure contenant les identifiants des objects graphiques dont la 
    % propriété Tag a été utilisée.
     
    data=guihandles(gcf);
     
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data 
    % contient les champs suivant :
    %   data.interface
     
    %   data.Load_image_tag
     
    % Enregistrement de data dans les données d'application de l'objet Figure
    guidata(gcf,data)
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % DEBUT DE LA SOUS-FONCTION CHARGER  %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function load_image(obj,event)
     
    [filename, pathname, filterindex] = uigetfile('*.jpg', 'Pick an JPG-file');
    image_loaded = strcat(pathname, filename)
    im_loaded=imread (image_loaded);
    axes('Position',[0.08 0.08 0.67 0.67]);
    image(im_loaded);
    axis image;
    axis off; 
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION CHARGER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    enfin ça m'affiche l'image pour l'instant..!

    je vais me pencher sur la deuxième étape de mon programme : cliquer sur l'image pour sélectionner la zone à traiter...
    la méthode la plus adaptée semble push button non?

    oui en effet on ne voit pas que c'est la méthode guidata_guihandle mais cela ne servira que pour mettre à jour des élèments affichés d'après ce que j'ai compris de la méthode, ce dont je n'ai pas besoin pour l'instant!!

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Pour forcer l'axe dans lequel s'affiche l'image (car je crois comprendre que c'est ça que tu souhaites), l'aide d'IMAGE précise :Donc tu mets un tag à tes axes (comme fait dans le code de ton post 1) pour pouvoir récupérer le handle dans data.axe1.
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    en fait j'ai un problème après car la méthode n'est pas bonne :

    je charge et affiche l'image sans problème
    je crée un deuxieme bouton découpage pour selectionner une zone

    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
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function gui_guidata_guihandles
     
    % Création de l'objet Figure
    figure('units','pixels',...
        'position',[300 300 800 600],...
        'color',[0.753 0.753 0.753],...
        'numbertitle','off',...
        'name','Logiciel de decoupe d image médicale',...
        'menubar','figure',...
        'tag','interface');
     
    % Création de l'objet Uicontrol Pushbutton Load
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'backgroundcolor',[1 1 1],...
        'position',[0.05 0.8 0.15 0.05],...
        'string','Load image',... 
        'fontsize',14.0,...
        'callback',@load_image,...
        'tag','Load_image_tag');
     
    % Création de l'objet Uicontrol Pushbutton Decoupe
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'backgroundcolor',[1 1 1],...
        'position',[0.3 0.8 0.15 0.05],...
        'string','Decoupage',... 
        'fontsize',14.0,...
        'callback',@decoupage,...
        'tag','Decoupage_tag');
     
    % insertion du fond initial
    image_backgnd=imread ('fond1.jpg','jpg');
    axes('Position',[0 0 1 1]);
    image(image_backgnd);
    axis image;
    axis off; 
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    % Génération de la structure contenant les identifiants des objects graphiques dont la 
    % propriété Tag a été utilisée.
     
    data=guihandles(gcf);
     
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data 
    % contient les champs suivant :
    %   data.interface
     
    %   data.Load_image_tag
     
    % Enregistrement de data dans les données d'application de l'objet Figure
    guidata(gcf,data)
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % DEBUT DE LA SOUS-FONCTION CHARGER  %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function load_image(obj,event)
     
    [filename, pathname, filterindex] = uigetfile('*.jpg', 'Pick an JPG-file');
    image_loaded = strcat(pathname, filename);
    im_loaded=imread (image_loaded);
    axes('Position',[0.08 0.08 0.67 0.67]);
    image(im_loaded);
    axis image;
    axis off; 
     
     
    function decoupage(obj,event)
     
    [xc,yc] = ginput(2);
    imgray = im_loaded(yc(1):yc(2),xc(1):xc(2),:);
    axes('Position',[0.08 0.08 0.67 0.67]);
    image(imgray);
    axis image;
    axis off; 
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION CHARGER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1 - mais forcement dans la fonction decoupage, il ne connait pas im_loaded,
    donc là je me rends compte que la méthode utilisée avant n'est pas bonne dans mon cas

    2 - de plus je pense que ginput va poser problème car xc(1), xc(2)... ne seront pas les coordonnée sur l'image mais sur la figure..


    help...

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    1. Pour la variable im_loaded, tu n'as qu'à l'enregistrer dans data :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data=guidata(gcbf);
    %....
    im_loaded=...
    %...
    data.im_loaded=im_loaded;
    guidata(gcbf,data);%mise à jour
    2. ginput donne les coordonnées par rapport à l'axe, l'image est dans l'axe donc les coordonnées sont bien celles de l'image.

    Et pour sélectionner un rectangle il y a plus simple encore, si tu as l'Image Processing Toolbox :
    getrect : Specify rectangle with mouse - MATLAB
    roipoly : Specify polygonal region of interest (ROI) - MATLAB
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    merci beaucoup ça marche bien comme ça, mnt je commence à voir l'intérêt de la méthode !

    j'aurai juste une dernière question :

    je veux afficher l'image découpée à la place de l'image affichée au debut.
    avec le code actuel, ca ne fait que afficher par dessus, ca n'efface pas l'image originale.
    Y a-t-il un moyen d'effacer l'image précédente (car l'image d'origine est plus grande que celle découpée donc ça déborde... :5)

    je pensais réafficher l'image de fond par dessus mais il doit y avoir plus simple...

    merci encore

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Euh, méthode bourrin => supprimer tous les "enfants" des axes où tu vas dessiner ta nouvelle image (s'il n'y a rien que tu veux garder bien sûr) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete(get(handleAxe,'Children'));
    image(...);
    Le mieux étant de récupérer (aussi) le handle de l'image et de "deleter" directement ce handle.
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    lol ouais un peu bourrin


    merci beaucoup!!

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    excuse moi dernier petit probleme...
    lorsque je fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    % Création de l'objet Axes 1
    axes('units','normalized',...
        'position',[0.08 0.08 0.67 0.67],...
        'tag','axe1');
    puis

    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
    function load_image(obj,event)
     
    data=guidata(gcbf);
     
    [filename, pathname, filterindex] = uigetfile('*.jpg', 'Pick an JPG-file');
    image_loaded = strcat(pathname, filename);
    im_loaded=imread (image_loaded);
    image(im_loaded,'Parent',data.axe1);
     
    %axes('Position',[0.08 0.08 0.67 0.67]);
    %axis image;
    %axis off; 
     
    data.im_loaded=im_loaded;
    guidata(gcbf,data);%mise à jour
    l'objet ne s'affiche pas..
    meme en mettant vivible à 'on' dans création de l'axe...

    merci....

  11. #11
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par nocolach Voir le message
    l'objet ne s'affiche pas..
    meme en mettant vivible à 'on' dans création de l'axe...
    bizarre...
    Quand tu dis l'objet c'est que même les axes ont "disparu" ? Ou c'est juste l'image qui ne s'affiche pas ?
    Et il n'y a même pas un petit message d'erreur ?
    Règles du Forum

    Adepte de la maïeutique

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    non l'image ne s'affiche pas mais elle est bien la
    voici le code


    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
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function gui_guidata_guihandles
     
    % Création de l'objet Figure
    figure('units','pixels',...
        'position',[300 300 800 600],...
        'color',[0.753 0.753 0.753],...
        'numbertitle','off',...
        'name','Logiciel de decoupe d image médicale',...
        'menubar','figure',...
        'tag','interface');
     
    % Création de l'objet Uicontrol Pushbutton Load
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'backgroundcolor',[1 1 1],...
        'position',[0.05 0.8 0.15 0.05],...
        'string','Load image',... 
        'fontsize',14.0,...
        'callback',@load_image,...
        'tag','Load_image_tag');
     
    % Création de l'objet Axes 1
    axes('units','normalized',...
        'position',[0.08 0.08 0.67 0.67],...
        'tag','axe1');
     
    % Création de l'objet Uicontrol Pushbutton Decoupe
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'backgroundcolor',[1 1 1],...
        'position',[0.3 0.8 0.15 0.05],...
        'string','Decoupage',... 
        'fontsize',14.0,...
        'callback',@decoupage,...
        'tag','Decoupage_tag');
     
    % insertion du fond initial
    image_backgnd=imread ('fond1.jpg','jpg');
    axes('Position',[0 0 1 1]);
    image(image_backgnd);
    axis image;
    axis off;
    il n'y a pas d'erreur d'affichée

    je lance le programme
    -> image de fond + boutons s'affichent (pas d'axes)
    je charge une image
    -> rien ne s'affiche
    je decoupe une partie de l'image où l'image est sensée être même si rien ne s'affiche
    -> ca affiche bien le bout découpé

    => le probleme vient du fond
    (je viens de voir que si je met en commentaire la partie insertion du fond ca marche)

    y a t il d'autre méthodes pour afficher l'image de fond ou devrais-je plutôt charger l'image de fond comme une autre image, sur un autre axe?

  13. #13
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Oki c'est un problème d'ordre :
    Dans MATLAB l'objet créé en dernier se place devant.
    Donc crée ton axe pour ton fond juste après la création de la figure, ça devrait aller mieux.
    Règles du Forum

    Adepte de la maïeutique

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    ok ouais c'était ça et toute dernière question (pour de vrai cette fois )

    pour garder l'aspect de la figure lors de l'affichage, quelle est la commande?

    parce que dans axe 'position' on dit où on veut afficher la figure mais la ça me redimensionne l'image, en la déformant pour bien aller dans toute la zone définie dans axe 'position'

  15. #15
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ce n'est pas ce que devraient faire la commande :Par contre j'enlèverais justement la ligne qui du coup ne sert à rien.

    Attention au vocabulaire : quand tu parles de la figure moi je comprends l'objet figure, alors que toi tu parles en fait des axes contenant l'image (si je ne me trompe)
    Règles du Forum

    Adepte de la maïeutique

  16. #16
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    c'est bien ça merci beaucoup pour ta patience!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture d'une figure lors de l'appel à guihandles
    Par kap dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 21/10/2009, 07h38
  2. Problème avec guidata
    Par Bloodista dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 09/06/2009, 18h54
  3. Utilisation de guihandles et guidata
    Par larimoise dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 20/11/2007, 01h35
  4. Problème avec GUIDATA GUIHANDLES
    Par soeursourire dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 23/10/2007, 15h53
  5. [Débutant] GUIDATA Save
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 25/06/2007, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo