Controle d'un drivecombobox par une listbox [Résolu]

Utilisateur anonyme - 6 févr. 2006 à 11:47 - Dernière réponse :  Utilisateur anonyme
- 6 févr. 2006 à 18:57
Salut à tous

Voilà j'ai un drivecombobox et directorylistbox et un filelistbox. Je récupère les items respectivement dans des listbox 1,2 et 3. Voilà j'aimerai quand je clique sur un item du listbox 1(contenant le drivecombobox) que le drivecombobox soit sur le meme item et qu'il y ai une répercussion sur le directorylistbox et le filelistbox. Quand je clique sur un item du listbox2(contenant le directorylistbox) faire apparaitre les sous-dossiers et fichiers dans el directorylistbox et filelistbox.

Question simple (lol) : comment faire ??

Merci
Afficher la suite 

20 réponses

Répondre au sujet
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 12:28
+3
Utile
tu mets simplement dans la procédure dans l'évènement onclick de la listbox par exemple:

procedure TForm1.ListBox1Click(Sender: TObject);

begin

with listbox1 do

drivecombobox1.drive:=items[itemindex][1];// si le lecteur est palce en début de ligne



end;



@+

jlen
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 13:12
+3
Utile
c'est le m^me principe suf qu'il faut t'assurer que tu es sur le bon disque sous peine de plantage!

procedure TForm1.ListBox1Click(Sender: TObject);

begin

with listbox1 do

DirectoryListBox1.Directory:=ListBox2.item[itemindex];

end;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 14:14
+3
Utile
j'ai compris il faut compléter le chemin du répertoire ainsi

pour "windows'--> DirectoryListBox1.Directory:='c:\'+ListBox2.items[itemindex];

et pour system32 --> DirectoryListBox1.Directory:='c:\windows\'+ListBox2.items[itemindex];

@+

jlen
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 12:09
0
Utile
salut,

il suffit de mettre dans la propriete drive du driveombobox la
lettre corespondant au lecteur dans la cas d'une listbox tu extrais le
drive en faisant :

with listboxxx do

drivecombobox1.drive:=items[itemindex][1];// si le lecteur est palce en début de ligne



@+

jlen
Commenter la réponse de jlen100
Utilisateur anonyme - 6 févr. 2006 à 12:21
0
Utile
Merci Jlen mais il me faudrait que la procedure se déclenche quand je clique sur l'item qui m'intéresse dans la listbox
Commenter la réponse de Utilisateur anonyme
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 6 févr. 2006 à 12:36
0
Utile
Salut,
c'est vrai quelle est facile ta question
mais j'ai l'impression que tu te compliques la vie
les DriveComboBox, DirectoryListBox et FileListBox sont fait pour être reliés entre eux par l'inspecteur d'objets, donc je me dis pourquoi ne pas utiliser cette fonction au lieu de passer par des intermédiaires que sont les ListBox
parce que ce que tu demandes c'est reproduire les comportements des DriveComboBox, DirectoryListBox et FileListBox en cliquant sur des ListBox

@+
Cirec
Commenter la réponse de Cirec
Utilisateur anonyme - 6 févr. 2006 à 12:44
0
Utile
Pour la simple raison que tu ne peux pas faire de stream avec drivecombobox directorylistbox et filelistbox parcontre avec les listbox tu peux. Voila pk Cirec
Commenter la réponse de Utilisateur anonyme
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 6 févr. 2006 à 12:52
0
Utile
ah bon
dans ce cas je ne dicute pas, autant pour moi
si tu l'avais precisé avant j'aurai économisé mon clavier

@+
Cirec
Commenter la réponse de Cirec
Utilisateur anonyme - 6 févr. 2006 à 12:57
0
Utile
C pas grave ca exerce tes doigts lol

merci à vous
Commenter la réponse de Utilisateur anonyme
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 12:58
0
Utile
note que tu peux faire la m^me chose avec filelistbox1.drive et Directorylistbox1.drive



@+

jlen
Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 13:01
0
Utile
-->cirec cela peux également limiter l'acces aux disques

@+

jlen
Commenter la réponse de jlen100
Utilisateur anonyme - 6 févr. 2006 à 13:03
0
Utile
Juste une dernière question : pour sélectionner le lecteur j'utilise "DRIVE" comment faire pour choisir le répertoire (clique sur le répertoire voulu dans le listbox2 et répercussion sur le directorylistbox) ?

merci
Commenter la réponse de Utilisateur anonyme
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 6 févr. 2006 à 13:08
0
Utile
@ jlen je n'ai jamais eut à faire ce genre de prog. mais si un jour le besoin se fait sentir...
merci pour l'information je garde ça sous le coude bien au chaud

@+
Cirec
Commenter la réponse de Cirec
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 13:17
0
Utile
-->cirec dans le cas que je donne il est encore plus simple de se
faire une combobox avec jutste les disques accessibles et la même chose
pour les repertoires (faire une combobox par disque) etc..etc..



@+

jlen
Commenter la réponse de jlen100
Utilisateur anonyme - 6 févr. 2006 à 13:22
0
Utile
effectivement ca plante à la deuxième sélection
Commenter la réponse de Utilisateur anonyme
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 6 févr. 2006 à 13:33
0
Utile
quand tu pars du listbox contenant les répertoires force les drives dans les différents combobox.



@+

jlen
Commenter la réponse de jlen100
Utilisateur anonyme - 6 févr. 2006 à 13:45
0
Utile
C pas le soucis Jlen pour ce que je veux faire mais il y a un soucis de taille :
Bon si j'arrive à C:
windows
system32

Et que je veux revenir sur C: ca marche
par contre si je sélectionne windows ou un autre sous répertoire de windows ca plante.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 6 févr. 2006 à 13:47
0
Utile
voila ma source

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FileCtrl, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
DriveComboBox1: TDriveComboBox;
ListBox1: TListBox;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
ListBox2: TListBox;
ListBox3: TListBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
listbox1.Items.text:=drivecombobox1.Items.Text;
listbox2.Items.text:=directorylistbox1.Items.Text;
listbox3.Items.text:=filelistbox1.Items.Text;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin

with listbox1 do
drivecombobox1.drive:=items[itemindex][1];
end;

procedure TForm1.ListBox2Click(Sender: TObject);
begin
with listbox2 do
DirectoryListBox1.Directory:=ListBox2.items[itemindex];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
listbox2.Items.text:=directorylistbox1.Items.Text;
listbox3.Items.text:=filelistbox1.Items.Text;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 6 févr. 2006 à 15:34
0
Utile
le probleme Jlen est que cela a lieu des que je vais sous un autre sous repertoire d'un répertoire donné ou que je remonte sur ce répertoire : ce n'est pas spécifique à windows ou system32. Il faut donc que je l'automatise.

Il faut que je cherche.

Merci bcp à toi Jlen (peut etre une ptite source va paraitre :))
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 6 févr. 2006 à 18:57
0
Utile
Je suis désolé j'ai dis une grosse boulette : il est possible d'utiliser un drivecombobox, un directorylistbox, un filelistbox avec les streams.

Exemple : Vous avez deux drive, deux directory, deux filelistbox :
procedure TForm1.Button1Click(Sender: TObject);
var Memdoss,Memdisk,Memfile:TMemoryStream;
begin
Memdisk:=TMemoryStream.Create; //Crée une instance TMemoryStream
Memdoss:=TMemoryStream.Create;
Memfile:=TMemoryStream.Create;
try
drivecombobox1.items.SaveToStream(Memdisk);
Memdisk.Seek(soFromBeginning,0);
drivecombobox2.items.LoadFromStream(Memdisk);
directorylistbox1.items.SaveToStream(Memdoss);
Memdoss.Seek(soFromBeginning,0);
directorylistbox2.items.LoadFromStream(Memdoss);
filelistbox1.items.SaveToStream(Memfile);
Memfile.Seek(soFromBeginning,0);
filelistbox2.items.LoadFromStream(Memfile);
finally
Memdisk.Free;
Memdoss.Free;
Memfile.Free;
end;
end;
end.

En cliquant sur le bouton vous récupérer ce que vous avez dans la partie 1 dans la partie 2
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.