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

Langage Delphi Discussion :

N'afficher que les répertoires du voisinage réseau


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 584
    Billets dans le blog
    65
    Par défaut N'afficher que les répertoires du voisinage réseau
    Tout est dans le titre , j'aimerais , avec un dialogue "classique" n'afficher que le 'voisinage réseau' ou d'ailleurs son contraire 'tout sauf le voisinage réseau' .

    c'est possible si j'en crois cette source en VB

    je pense que je dois jouer avec SHBrowseForFolder et browseInfo et les flags , mais là , je sèche lamentablement

    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
    function BrowseDialog
     (const Title: string; const Flag: integer): string;
    var
      lpItemID : PItemIDList;
      BrowseInfo : TBrowseInfo;
      DisplayName : array[0..MAX_PATH] of char;
      TempPath : array[0..MAX_PATH] of char;
    begin
      Result:='';
      FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
      with BrowseInfo do begin
        hwndOwner := Application.Handle;
        pszDisplayName := @DisplayName;
        lpszTitle := PChar(Title);
        ulFlags := Flag;
        lpfn := BrowseDialogCallBack;
       pidlRoot:=  // <<<-------------------------------------ici est la vraie question  
      end;
      lpItemID := SHBrowseForFolder(BrowseInfo);
      if lpItemId <> nil then begin
        SHGetPathFromIDList(lpItemID, TempPath);
        Result := TempPath;
        GlobalFreePtr(lpItemID);
      end;
    end;

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Salut Serge

    J'ai trouvé cela :

    http://delphi.about.com/od/windowssh.../aa070400a.htm

    Ou peut-être des composants tous fait

    http://www.jam-software.com/shellbro...mponents.shtml

    A+

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Re

    En utilisant cette FAQ et l'unité FileCtrl voilà ce que tu pourrais faire

    FAQ

    EXTRAIT FAQ DEVELOPPEZ.NET
    Ajoute l'unité Shlobj

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function SpecialFolder(Folder: Integer): String;
    var
      SFolder : pItemIDList;
      SpecialPath : Array[0..MAX_PATH] Of Char;
    begin
      SHGetSpecialFolderLocation(Form1.Handle, Folder, SFolder);
      SHGetPathFromIDList(SFolder, SpecialPath);
      Result := StrPas(SpecialPath);
    end;
    Ensuite Dans un Tbutton par exemple :

    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
    procedure TForm1.Button3Click(Sender: TObject);
    Var
       Dir: String;
    begin
     
    // On force l'ouverture sur le reseau
    // Cela empeche a l'utilisateur dans choisir un autre
    // dans la FAQ voir toutes les autres CSIDL_
     
      if SelectDirectory('Chemin ..............',
        SpecialFolder(CSIDL_NETHOOD),Dir,[],Self) then
        begin
          showmessage(Dir);
        end;
     
    end;
    Amuse toi bien l'ami.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 584
    Billets dans le blog
    65
    Par défaut
    sur le premier post , on a la même source
    le second lien est très intéressant mais je ne veut pas mettre de shareware dans l'application (je songe à la passer Lazarus/Linux)

    à ma grande honte je n'avais pas pensé à regarder dans la FAQ
    je vais plutôt regarder ça de plus près elle me plait bien

    Merci , je vais pouvoir continuer à jouer

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 584
    Billets dans le blog
    65
    Par défaut
    pour l'instant les options proposées ne fonctionnant pas (peut être parce que je n'ai pas de réseau local ou je suis , pas de cable réseau branché non plus ) j'ai trouvé une autre astuce (windows vista , D2010)

    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
     
    uses StdActns; 
    ...
    // recherche répertoire
    procedure TForm3.Button1Click(Sender: TObject);
    var   bforFolder : TBrowseForFolder;
    begin
      bForFolder:=TBrowseForFolder.Create(self);
      try
        bForFolder.RootDir:='::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}';  // réseau
    //    bForFolder.RootDir:='::{20D04FE0-3AEA-1069-A2D8-08002B30309D}'; ordinateur
        if bforFolder.Execute then
         ShowMessage('Selected: ' + #13#10 + bForFolder.Folder);
      finally
        bForFolder.Free;
      end;
    end;
    Maintenant :
    -est-ce valable sur tout les postes ?
    -est-ce valable pour XP ? WinMe (si si il en existe encore) ? etc...

    cela semble être les valeurs contenu dans le registre mais où ? c'est ma prochaine recherche ....

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/04/2006, 10h56
  2. [JFileChooser] Afficher seulement les répertoires
    Par Cyborg289 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 04/09/2005, 15h45
  3. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  4. n'afficher que les "print" dans query annalyser
    Par sky_perrinos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2004, 10h58
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 10h59

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