Bonjour,
J'utilise un SpeeButton associé à une action "browseforfolder".
Je n'arrive pas à récupérer le répertoire sélectionné par un utilisateur (boite de dialogue declanchée par l'action) dans un TEdit.
Merci pour votre aide.
Version imprimable
Bonjour,
J'utilise un SpeeButton associé à une action "browseforfolder".
Je n'arrive pas à récupérer le répertoire sélectionné par un utilisateur (boite de dialogue declanchée par l'action) dans un TEdit.
Merci pour votre aide.
A priori la propriété Directory se charge de te rendre ce que tu recherches.
Voir la documentation du shellBrowser : http://www.etsimo.uniovi.es/delphi/f...e/brwsfldr.htm
Merci pour ton aide, je ne connais pas ce site, il a l'air tres interressant.
Pour en revenir à ma question, en fait, j'ai oublié de préciser que j'avais plusieurs champs TEdit. A coté de chaque champs, j'ai placé un petit Speedbutton, chacun callé sur l'action "Browseforfolder".
Du coup, je ne sais pas placer mon code (et quel code) pour que le chemin choisi par l'utilisateur s'affiche dans le bon TEdit. Je pense qu'il y a un moyen de savoir pour l'action "Browseforfolder", qui l'a appelé, et on l'on doit placer le retour utilisateur.
Mais je n'arrive pas a voir si il faut plutot regarder du coté des événements des SpeddButton, ou de l'action.
Cordialement, François
Salut,
Tu peux pour ce faire utiliser la propriété ActionComponent qui renvoie le composant client qui a déclenché l'action.
Voilou, @+Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TForm1.MonActionExecute(Sender: TObject); var SelectedFolder: String; // Ton dossier sélectionné SenderComponent: TSpeedButton; begin // ... SenderComponent := TSpeedButton(TAction(Sender).ActionComponent); if SenderComponent = SpeedButton1 then Edit1.Text := SelectedFolder else if SenderComponent = SpeedButton2 then Edit2.Text := SelectedFolder else // .... end; end;
Super, c'est exactement ça, merci beaucoup !
Et bien j'ai répondu un peu trop vite... et ensuite j'ai pris un peu de vacance... alors voila, j'ai toujours un souci. Pour récupérer l'emeteur de la demande, ça a l'air de fonctionner, mais rien ne s'affiche.
J'ai essayé avec "SelectedFolder" et "SelectedDirectory", mais je n'arrive a rien.
Si sous avez encore un tout petit peu de temps pour m'aider à surmonter cette dificulté (qui me semble etre un truc de débutant)...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TFrame_config.BrowseForFolder1Execute(Sender: TObject); var SelectedDirectory: String; // Dossier sélectionné SenderComponent: TSpeedButton; begin SenderComponent := TSpeedButton(TAction(Sender).ActionComponent); if SenderComponent = SpeedButton_base then Edit_chemin_base.Text := SelectedDirectory else if SenderComponent = SpeedButton_image then Edit_chemin_image.Text := SelectedDirectory else // .... a completer plus tard ... end;
j'ai encore du chemin a faire !
François
Salut,
Tu n'expliques pas quelle méthode tu utilises pour sélectionner un dossier, alors voici un méthode simple (SelectDirectory de l'unité FileCtrl) que j'utilise régulièrement.
Remarque: L'unité FileCtrl est propre à la plate-forme Win32. (Sauf erreur)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TFrame_config.BrowseForFolder1Execute(Sender: TObject); var SelectedDirectory: String; // Dossier sélectionné SenderComponent: TSpeedButton; begin // Sélection du dossier if SelectDirectory(SelectedDirectory, [sdAllowCreate,sdPerformCreate,sdPrompt],0) then begin // Récupérer le composant appelant et affecter le dossier au TEdit correspondant SenderComponent := TSpeedButton(TAction(Sender).ActionComponent); if SenderComponent = SpeedButton_base then Edit_chemin_base.Text := SelectedDirectory else if SenderComponent = SpeedButton_image then Edit_chemin_image.Text := SelectedDirectory else // ... end; end;
@+ Claudius.
Hello,
Et bien cela fonctionne tres bien avec ta methode.
Au départ, je voulais utiliser l'action prédéfinie d'un composant TAction --> BrowseForFolder (a ce moment la, la boite de dialogue s'affiche en Français). Mais je ne sais pas comment récuperer le répertoire choisi.
Avec ta methode, ça fonctionne, mais la boite de dialogue est en anglais (j'ai une version US de Delphi, c'est peut etre pour cela).
J'aimerai bien comprendre la methode avec le BrowseForFolder.
Je met quand même se Tread sur résolu.
Merci beaucoup pour ton aide !!! :-)
et est-ce qu'il serai possible d'ouvrir un SelectDirectory (ou n'importe quoi d'autre qui ressemble) qui pointerai déjà sur un dossier ? genre 'c:\Program Files\' ?