Sceyllia
Messages postés8Date d'inscriptionmercredi 8 août 2007StatutMembreDernière intervention21 mars 2013
-
14 mars 2011 à 10:50
cs_mourad555
Messages postés12Date d'inscriptionjeudi 25 décembre 2008StatutMembreDernière intervention22 février 2020
-
3 avril 2011 à 14:32
Bonjour à tous,
Je me décide de solliciter un coup de main, car je n'arrive pas a trouver une solution a mon problème.
Voilà, j'ai une ListBox dans laquelle j'aimerais sélectionner l'ouverture/fermeture de mes lecteurs CD/DVD.
Le soucis est que seul mon premier lecteur "réagit" a cette "commande" alors que j'aimerais pouvoir l'effectuer
sur le lecteur de mon choix, je ne sais pas si ma question est claire...
Voici mon code :
procedure TForm1.FormCreate(Sender: TObject);
var
Drive: char;
begin
for Drive := 'A' to 'Z' do
begin
if (GetDriveType(PChar(Drive + ':\')) = DRIVE_CDROM) then ListBox1.Items.Add(Drive + ':');
end;
ListBox1.ItemIndex := 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CloseDoor(ListBox1.Items.Text);
end;
procedure TForm1.Quitter1Click(Sender: TObject);
begin
Close;
end;
end.
je remercie à l'avance celui ou celle qui voudra bien m'aider.
Merci.
A voir également:
Delphi listbox selected item
Listbox selected item - Meilleures réponses
Delphi listbox get selected item - Meilleures réponses
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 14 mars 2011 à 14:28
Salut,
peu importe si le code se trouve dans dans l'évènement d'un TButton ou d'un OnChange ...
il faut modifier le code comme suit:
[b]begin
with /bListBox1 [b]do
if /bItemIndex > -1 [b]then
/bCloseDoor(Items[ItemIndex]);
end;
ceci devrait résoudre ton problème.
en effet ListBox1.Items.Text te renvoi le contenu de la liste ... pas l'élément sélectionné.
Pour t'en convaincre il te suffit de faire:
ShowMessage(ListBox1.Items.Text);
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 avril 2011 à 21:07
[quote= Sceyllia]mais j'imagine qu'elles ne sont pas identiques, enfin j'espère, car là je pigerais nettement
moins pourquoi l'écrire autrement, (peut-être l'expérience). /quote
1) ben si elles sont totalement idendiques
2) parce qu'un bon programmeur est un programmeur fainéant (j'ai entendu dire ça un jour )
plus sérieusement, je vais essayer d'éclaircir un peu les choses:
[hr] [i]{cette version évite juste réécrire à chaque ligne "ListBox1."
avant l'appel aux méthodes et propriétés}
/i procedure TForm1.Button1Click(Sender: TObject);
[b]begin
/b {littéralement: avec "ListBox1 faire}
with ListBox1 [b]do
if /bItemIndex > -1 [b]then
/bCloseDoor(Items[ItemIndex]);
end;
[i]{** Normalement, pour une meilleur lecture, on devrait l'écrire comme ceci}
/iprocedure TForm1.Button1Click(Sender: TObject);
[b]begin
with /bListBox1 [b]do
/b{tous les appels aux propriétés & méthodes entre begin et end} {se font prioritairement sur ListBox1} [b]begin
if /bItemIndex > -1 [b]then
/bCloseDoor(Items[ItemIndex]);
{ceci va changer la couleur du fond du ListBox1} Color : = clBlue;
[i]{ceci va changer le Caption de Form1 puisque cette propriété n'existe pas
dans TListBox}/i Caption := 'ceci est un teste';
end ;
[i]{ceci va changer la couleur du fond de Form1
puisqu'on est en dehors de begin/end et qu'on est dans une procédure de
Form1 "procedure TForm1.Button1Click"}/i Color : = clBlue;
end;
[hr]** mais dans le code que je donne le "begin" et le "end" ne sont pas utiles ... c'est pour cette raison que je les ai supprimés
voilà j'espère que c'est un peu plus clair pour toi