Controle d'un drivecombobox par une listbox

Résolu
Utilisateur anonyme - 6 févr. 2006 à 11:47
 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

20 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 12:28
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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 13:12
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;
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 14:14
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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 12:09
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 févr. 2006 à 12:21
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 févr. 2006 à 12:36
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
0
Utilisateur anonyme
6 févr. 2006 à 12:44
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 févr. 2006 à 12:52
ah bon
dans ce cas je ne dicute pas, autant pour moi
si tu l'avais precisé avant j'aurai économisé mon clavier

@+
Cirec
0
Utilisateur anonyme
6 févr. 2006 à 12:57
C pas grave ca exerce tes doigts lol

merci à vous
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 12:58
note que tu peux faire la m^me chose avec filelistbox1.drive et Directorylistbox1.drive



@+

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

@+

jlen
0
Utilisateur anonyme
6 févr. 2006 à 13:03
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 févr. 2006 à 13:08
@ 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
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 13:17
-->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
0
Utilisateur anonyme
6 févr. 2006 à 13:22
effectivement ca plante à la deuxième sélection
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 févr. 2006 à 13:33
quand tu pars du listbox contenant les répertoires force les drives dans les différents combobox.



@+

jlen
0
Utilisateur anonyme
6 févr. 2006 à 13:45
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.
0
Utilisateur anonyme
6 févr. 2006 à 13:47
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.
0
Utilisateur anonyme
6 févr. 2006 à 15:34
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 :))
0
Utilisateur anonyme
6 févr. 2006 à 18:57
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
0