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

 Delphi Discussion :

position de SelectDirectory


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 36
    Points
    36
    Par défaut position de SelectDirectory
    Bonjour à tous,
    ...et bonne année 2009.
    J'utilise la fonction SelectDirectory mais la fenêtre qui s'ouvre
    se place n'importe où !
    Y a-t'il un moyen pour qu'elle se positionne au milieu de la forme,
    sinon au milieu de l'écran.
    J'ai lu et essayé la méthode de Sammy Larson, elle est efficace
    mais je cherche plus simple ! Quelqu'un a une idée ?
    Merci de votre aide
    Amitiés
    Pierre

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Il me semble que celui de la JVCL (JVCLDialogs) se positionne correctement, du moins je n'ai jamais eu de pb...

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Je connais pas ce select directory mais pour centrer un composant en milieu d'ecran je fais ça :

    Haut1:=largeur de l'ecran.
    Haut2:=largeur du composant.
    Larg1:=Largeur de l'ecran.
    Larg2:=Largeur du composant.

    Composant.left:=(Larg1 - Larg2) div 2;
    Composant.Top:=(Haut1 - Haut2) div 2;

    'Composant' bien sûr tu le remplace par le nom de ton composant^^
    Et déclare Larg1,Larg2,Haut1,Haut2 en integer.

    Bien sûr ça marche que si le parent où est posé le composant est en écran fullscreen, et la largeur et hauteur d'ecran sont en fait ceux du composant parent qui est en fullscreen.

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut
    Yop !

    Laisse tomber SelectDirectory et jette un oeil à ce lien, ça fonctionne parfaitement.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Pour info, qu'est-ce que ça fait de plus par rapport à SelectDirectory + le code de positionnement que j'ai affiché ?

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut
    Citation Envoyé par dragonno Voir le message
    Pour info, qu'est-ce que ça fait de plus par rapport à SelectDirectory + le code de positionnement que j'ai affiché ?
    SelectDirectory c'est pas un composant, c'est une fonction qui va demander à Windows d'afficher pour toi une fenêtre, mais c'est pas toi (pas ton code) qui la crée, donc difficile à positionner (à moins de passer par des messages compliqués).
    F1 sur SelectDirectory...

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Ha merci beaucoup Jipété (non non c'est pas moi qui a...) ^^

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Bonsoir et merci à tous pour les réponses.
    A la lecture de vos proses, j'en ai déduit une chose intéressante,
    sans trop comprendre pourquoi ni comment cela fonctionne,
    mais je l'ai adoptée car cela ne me pose pas de problème dans
    l'application que je développe en ce moment.
    Alors, pour ceux que cela intéresse :
    La fenêtre SelectDirectory est toujours centrée lorsqu'on
    met la forme principale en mode Maximized !!!
    Amitiés
    Pierre

    ps : si personne n'a d'autres avis, je mettrai prochainement Résolu.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut Super !
    Bonjour à toutes et à tous,

    @ Jipété, super ce lien, je me demande dans ce cas de figure si on peux préciser le dossier par défaut.

    @ Berpi, ton interprétation est fausse,

    La fenêtre SelectDirectory est toujours centrée lorsqu'on
    met la forme principale en mode Maximized !!!
    par défaut même si la fiche est à Maximized, La fenêtre SelectDirectory n'est pas centrée sauf avec une fonction spéciale.

    @+,

    Cincap

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut Lien à suivre/fouiller
    Yop !
    Citation Envoyé par cincap Voir le message
    @ Jipété, super ce lien, je me demande dans ce cas de figure si on peux préciser le dossier par défaut.
    Ch'sais pô...
    Faudrait voir TBrowseInfo et tous ses paramètres, auquel cas, s'il y a un truc genre InitialDir, on doit pouvoir modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function BrowseDialog
     (const Title: string; const Flag: integer): string;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function BrowseDialog
     (const Title: string; const InitialDir: string; const Flag: integer): string;
    Pas de Delphi sous la main (suis au taf) et loin de ma machine ce week-end...

    Cherchez !

    [edit] Je viens de trouver ça (en bas), en fouillant sur la page du lien :
    Often, you may prefer that your application start the browse dialog box at a folder that the user is likely to want, such as the current working directory. (...) To set the browse dialog box's initial selection, the BROWSEINFO structure must contain a special callback function.
    , qui confirme ce que je disais y a 5 minutes. [/edit]

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut Déjà essayé !
    @ Jipété, merci de ta réponse mais j'avais déjà essayé cette modif sans résultat.

    @+,

    Cincap

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut
    Si t'as Delphi sous la main, fais donc voir la structure de TBrowseInfo, siouplait.

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut Voici !
    BROWSEINFO QuickInfo

    typedef struct _browseinfo {

    HWND hwndOwner; // see below
    LPCITEMIDLIST pidlRoot; // see below
    LPSTR pszDisplayName; // see below
    LPCSTR lpszTitle; // see below
    UINT ulFlags; // see below
    BFFCALLBACK lpfn; // see below
    LPARAM lParam; // see below
    int iImage; // see below
    } BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;


    Contains parameters for the the SHBrowseForFolder function and receives information about the folder selected by the user.

    Members

    hwndOwner

    Handle of the owner window for the dialog box.

    pidlRoot

    Pointer to an item identifier list (an ITEMIDLIST structure) specifying the location of the "root" folder to browse from. Only the specified folder and its subfolders appear in the dialog box. This member can be NULL, and in that case, the name space root (the desktop folder) is used.

    pszDisplayName

    Pointer to a buffer that receives the display name of the folder selected by the user. The size of this buffer is assumed to be MAX_PATH bytes.

    lpszTitle

    Pointer to a null-terminated string that is displayed above the tree view control in the dialog box. This string can be used to specify instructions to the user.

    ulFlags

    Value specifying the types of folders to be listed in the dialog box as well as other options. This member can include zero or more of the following values:

    BIF_BROWSEFORCOMPUTER Only returns computers. If the user selects anything other than a computer, the OK button is grayed.
    BIF_BROWSEFORPRINTER Only returns printers. If the user selects anything other than a printer, the OK button is grayed.
    BIF_DONTGOBELOWDOMAIN Does not include network folders below the domain level in the tree view control.
    BIF_RETURNFSANCESTORS Only returns file system ancestors. If the user selects anything other than a file system ancestor, the OK button is grayed.
    BIF_RETURNONLYFSDIRS Only returns file system directories. If the user selects folders that are not part of the file system, the OK button is grayed.
    BIF_STATUSTEXT Includes a status area in the dialog box. The callback function can set the status text by sending messages to the dialog box.


    lpfn

    Address an application-defined function that the dialog box calls when events occur. For more information, see the description of the BrowseCallbackProc function. This member can be NULL.

    lParam

    Application-defined value that the dialog box passes to the callback function (if one is specified).

    iImage

    Variable that receives the image associated with the selected folder. The image is specified as an index to the system image list.



    See Also

    BrowseCallbackProc, ITEMIDLIST, SHBrowseForFolder

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut On perd de vue que...
    @ Jipété, ne te tracasse pas trop, car au final la boite SelectDirectory est quand même prévue pour pouvoir sélectionner le directory !

    Donc il me parait inutile de sélectionner par cette méthode un dossier spécifique.

    @+,

    Cincap

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut
    Yop !
    Citation Envoyé par cincap Voir le message
    @ Jipété, ne te tracasse pas trop, car au final la boite SelectDirectory est quand même prévue pour pouvoir sélectionner le directory !

    Donc il me parait inutile de sélectionner par cette méthode un dossier spécifique.

    @+,

    Cincap
    Exact, mais comme ça peut être utile dans un autre cas de figure, pourquoi ne pas en profiter, d'autant plus que c'est prévu ! :
    pidlRoot
    Pointer to an item identifier list (an ITEMIDLIST structure) specifying the location of the "root" folder to browse from. Only the specified folder and its subfolders appear in the dialog box. This member can be NULL, and in that case, the name space root (the desktop folder) is used.
    Évidement, ça ne doit pas être simple : Pointer to an item identifier list...

  16. #16
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Vous avez regardé cette discussion ?

    Ca risque bien de répondre à vos besoins

  17. #17
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 850
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 850
    Points : 15 264
    Points
    15 264
    Par défaut
    Hé ben voilà !

    Un seul homme vous manque et tout est dépeuplé !

    Salut, Ero

  18. #18
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    C'est vrai que pour retrouver la fonction en utilisant la fonction rechercher du forum, c'est pas évident.
    J'avais mis de coté ce bout de code qui me sert dans certaines de mes applications...

    A+

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut Oui je connaissais cette fonction !
    Au départ, elle s'appelait :

    function AdvSelectDirectory(const Caption: string; const Root: WideString;
    var Directory: string; EditBox: Boolean = False; ShowFiles: Boolean = False;
    AllowCreateDirs: Boolean = True): Boolean;
    Merci à tous,

    @+,

    Cincap

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Bonjour à tous,
    D'accord avec Cincap, la fenêtre maximized n'entraîne pas obligatoirement un centrage de SelectDirectory.
    Je reconnais mon erreur et accepte ta remarque.
    Mais il y a du nouveau : Ca y est, merci à Marko Martin !
    J'ai trouvé sur Torry's Delphi
    une fonction nommée AdvSelectDirectory qui répond à toutes mes attentes !

    La fenêtre SelectDirectory obtenue est auto-centrée.
    De plus elle est paramétrable :
    Possibilité de mettre un message
    apparition (ou pas) d'un bouton 'créer un nouveau dossier'
    etc, etc.

    voir ce lien : http://www.swissdelphicenter.ch/torr...de.php?id=1802

    Amitiés

    Pierre

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Position du curseur
    Par gimlithedwarf dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2002, 23h45
  2. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  3. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09
  4. Réponses: 2
    Dernier message: 17/05/2002, 20h37
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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