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

Composants FMX Delphi Discussion :

Styles autre que Windows, comment tester


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut Styles autre que Windows, comment tester
    Bonjour,

    Suite à cette discussion
    ma tentative maintenant est de pouvoir visualiser des styles non [WINDOWS] comme le fait le FMXStyleViewer.

    Seulement je tombe sur un bec ! Comment appliquer un style non chargeable (ou plutôt non applicable) ?

    Quelqu'un aurait-il déjà tenté, ou même trouvé les sources de FMXStyleviewer (ce serait le top ) ce que je trouve de plus proche dans les démos c'est le programme
    C:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Object Pascal\Multi-Device Samples\User Interface\Controls\mobilecontrols mais nulle part y est fait mention de chargement de style

    J'ai bien idée que cela pourrait être en créant les composants visuel au runtime mais ..
    à moins que, autre piste : en appellant directement FMXStyleViewwer, dans ce cas est-il possible de mettre l'écran d'une application externe dans une fenêtre de l'application ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut En appelant directement FMXStyleViewwer
    Bonjour
    Citation Envoyé par SergioMaster Voir le message
    Dans ce cas est-il possible de mettre l'écran d'une application externe dans une fenêtre de l'application ?
    J'ai fait plusieurs lectures en ce sens ce serait possible mais ou c'est moi (le plus probable) ou c'est FMX je n'y arrive pas !

    pour la partie lancement externe pas de souci, quelques unités à déclarer FMX.Platform.Win, WinApi.ShellApi, winapi.windows et le tour est joué.

    c'est après que cela se corse (en commentaire rouge ce que j'ai pu trouvé sur le net, sinon mes tentatives )

    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
    procedure TMainform.Button3Click(Sender: TObject);
    var
      Rec: TShellExecuteInfo;
      Hviewer : Hwnd;
      nom : string;
    const
      AVerb = 'open';
    
    begin
    // lance styleviewer
    // shell execute simple
    //ShellExecute(WindowHandleToPlatform(Handle).Wnd, 'open',
    //             PChar(styleviewer),pchar(Opendialog.filename),
    //             '', SW_SHOWNORMAL) ;
    
    // Supprime la barre de titre
    //SetWindowLong(aHandle, GWL_STYLE, GetWindowLong(aHandle, GWL_STYLE) And Not WS_CAPTION);
    //SetWindowPos(aHandle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER);
    //
    //       // Assigne et maximise le prog externe au conteneur (un panel ici)
    //       Windows.SetParent(aHandle, presentedScrollbox1.Handle);
    //       SetForeGroundWindow(HandleViewver);
    //       ShowWindow(HandleViewver, SW_MAXIMIZE);
    
      FillChar(Rec, SizeOf(Rec), #0);
    
      Rec.cbSize       := SizeOf(Rec);
      Rec.fMask        := SEE_MASK_NOCLOSEPROCESS;
      Rec.lpVerb       := PChar( AVerb );
      Rec.lpFile       := PChar( Styleviewer );
      Rec.lpParameters := PChar( StyleName.Text );
      Rec.lpDirectory  := PChar('');
      Rec.nShow        := SW_SHOW;
    
      ShellExecuteEx(@Rec);
      WaitForInputIdle(Rec.hProcess, 5000);
    
      //  Hviewer := WinApi.Windows.FindWindow(???????, nil );
    //  WinApi.Windows.SetParent(HViewer,FormToHWindow(Mainform.Handle).wnd);
    
    //  Resize;
    //  ShowWindow(HViewer, SW_SHOW);
    
    end;
    je pense que le plus gros du soucis vient des Handles.

    Du coup, je vais faire la même tentative avec un programme VCL mais, si quelqu'un à une idée ...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Un dernier point avant de me mettre au travail. J'ai fait un test avec VCL.

    Tout d'abord, il me manquait une procedure (onResize de la forme)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // fproghandle = handle de la fenêtre crée
    procedure TForm11.FormResize(Sender: TObject);
    begin
      if IsWindow(fprogHandle) then begin
        SetWindowPos(fprogHandle, 0, 0, 0, ClientWidth, ClientHeight,
          SWP_ASYNCWINDOWPOS);
      end;
    end;
    un essai avec Notepad
    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
     
    procedure TForm11.notepad;
    var
      Rec: TShellExecuteInfo;
    const
      AVerb = 'open';
      AParams = '';
      AFileName = 'Notepad.exe';
      ADir = '';
    begin
      FillChar(Rec, SizeOf(Rec), #0);
     
      Rec.cbSize       := SizeOf(Rec);
      Rec.fMask        := SEE_MASK_NOCLOSEPROCESS;
      Rec.lpVerb       := PChar( AVerb );
      Rec.lpFile       := PChar( AfileName );
      Rec.lpParameters := PChar( fichierstyle.text);
      Rec.lpDirectory  := PChar( Adir );
      Rec.nShow        := SW_HIDE;
     
      ShellExecuteEx(@Rec);
      WaitForInputIdle(Rec.hProcess, 5000);
     
      fprogHandle := winapi.Windows.FindWindow( 'Notepad', nil );
      winapi.Windows.SetParent( fprogHandle, Handle );
     
      Resize;
      ShowWindow(fprogHandle, SW_SHOW);
    end;
    Fonctionne nickel (il faudra juste que je joue sur la taille)
    Nom : Capture.PNG
Affichages : 229
Taille : 32,3 Ko

    où cela coince ? à l'obtention du Handle de programme quand je lance fmxstyleviewer
    c.a.d. cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprogHandle := winapi.Windows.FindWindow( nom, nil );
    quelle valeur mettre quand je lance 'D:\Embarcadero\Studio\21.0\bin\FMXStyleViewer.exe' ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Celui de 17.0 c'est FMTFMStyleViewerFrm - Visionneuse de styles FMX
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Comment tu as trouvé ce nom ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    J'ai un vieux programme à l'époque où j'étais apprenti qui fait un EnumWindows comme celui de la FAQ : Comment récupérer les handles des fenêtres d'un processus ? en D4 et toujours fonctionnel.

    Nom : StyleViewer.jpg
Affichages : 212
Taille : 27,2 Ko
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    impossible d'atteindre cette fenêtre
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    J'ai tenté par CreateProcess

    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
    procedure TForm11.Button1Click(Sender: TObject);
    var
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      CommandLine: string;
      aHandle : THandle;
    begin
      CommandLine := '"'+styleviewer+'" "'+fichierstyle.text+'"';
     
      ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
      StartupInfo.cb := SizeOf(StartupInfo);
      StartupInfo.dwX:=80;
      StartupInfo.dwY:=80;
      StartupInfo.dwXSize:=60;
      StartupInfo.dwYSize:=60;
      StartupInfo.dwFlags:= STARTF_USESIZE AND STARTF_USEPOSITION;
     
      if CreateProcess(nil, PChar(CommandLine), nil, nil, FALSE, 0, nil, nil, StartupInfo, ProcessInfo) then
      begin
        repeat
          Application.ProcessMessages;
        until WaitForSingleObject(ProcessInfo.hProcess, 200) <> WAIT_TIMEOUT;
     
     
        CloseHandle(ProcessInfo.hProcess);
        CloseHandle(ProcessInfo.hThread);
     
      end
      else RaiseLastOSError;
    end;
    me disant que dans la startupinfo j'allais positionner la fenêtre, mais fait ce qu'il veut sans tenir compte de mes instructions de position et taille (même une tentative notepad n'a rien donné)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    pour en avoir le coeur net, j'ai créé un petit programme VCL simple et compris en partie ce qui clochait :
    la subtilité entre fprogHandle := winapi.Windows.FindWindow( nomapplication , nil );et fprogHandle := winapi.Windows.FindWindow( nil , nomfenêtre );Reste qu'il y a encore un truc qui déconne, je soupconne le fait que ce soit un programme avec traduction et que la fenêtre ne soit connue sous son nom en anglais ou alors que des espaces me jouent des tours !

    Du coup, je me penche sur la question suivante : comment obtenir le nom de la fenêtre à partir d'un id de process ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Aucun problème particulier en VCL.

    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      if ShellExecute(Handle, 'open', 'FMXStyleViewer.exe', nil, nil, SW_HIDE) <= 32 then Exit;
     
      repeat
        Viewer := FindWindow('FMTFMStyleViewerFrm', nil);
      until Viewer <> 0;
     
      WinApi.Windows.SetParent(Viewer, Handle);
      SetWindowLong(Viewer, GWL_STYLE, GetWindowLong(Viewer, GWL_STYLE) and not(WS_DLGFRAME or WS_THICKFRAME));
      SetWindowPos(Viewer, 0, 0, 0, ClientWidth, ClientHeight, 0);
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SendMessage(Viewer, WM_CLOSE, 0, 0);
    end;

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Un grand merci Andnotor, je devenais chèvre !
    Tout est dans ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    repeat
        Viewer := FindWindow('FMTFMStyleViewerFrm', nil);
      until Viewer <> 0;
    que je n'osais faire !
    finalement, ça SetWindowLong(Viewer, GWL_STYLE, GetWindowLong(Viewer, GWL_STYLE) and not(WS_DLGFRAME or WS_THICKFRAME)); je ne vais pas faire
    mais si maintenant quelqu'un a une astuce pour désactiver une option du menu (Charger ...) ce serait le top !
    à moins que récupérer le style ouvert par FMXStyleViewer soit possible ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Tout est dans ta boucle ... que je n'osais faire !
    Je n'avais pas vu que tu avais ce soucis, pour un programme externe, je dois mettre un sleep(100) systèmatiquement après un ShellExecute ou CreateProcess comme explique dans le sujet Mettre une fenêtre externe au premier plan où pareil, pas trouver mieux qu'une boucle d'attente car le programme peut faire des choses avant de créer la fenêtre sinon si c'est un programme à moi, la plupart gérait un WM_COPYDATA au démarrage, donc si je faisais un FindWindow ensuite, le programme était déjà largement lancé.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    mais si maintenant quelqu'un a une astuce pour désactiver une option du menu (Charger ...) ce serait le top !
    Ces contrôles sont purement graphiques (pas de handle) et ne fournissent aucune informations MSAA ou UIAutomation, rien à en tirer…


    Donc si vous voulez que vos apps soient utilisables à travers des outils d'accessibilité (screen-reader ou autres), ne faites pas de FMX

Discussions similaires

  1. Eclipse avec workspace sur un serveur autre que windows
    Par mrbungle dans le forum Eclipse
    Réponses: 6
    Dernier message: 30/09/2008, 16h37
  2. MFC, son équivalent sur des plateformes autre que Windows
    Par uranium-design dans le forum Visual C++
    Réponses: 7
    Dernier message: 03/11/2006, 16h32
  3. Réponses: 12
    Dernier message: 27/06/2005, 19h06
  4. [XML]Comment tester que mon fichier XML est comme ceci?
    Par Devil666 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/06/2005, 13h41
  5. Comment fermer l'application en même temps que Windows ?
    Par semaj_james dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2004, 22h17

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