Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à jour d'une FileListBox

19 réponses
Avatar
L'AMI Yves
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour être
complet, j'ai aussi une TextBox où je peux rentrer un "Pattern". Je suis
sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que mon
application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la liste
des fichiers autrement qu'en fermant et rouvrant mon application DEUX FOIS
!!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour tenir sa
liste à jour...

AMIcalement

10 réponses

1 2
Avatar
Jacques93
Bonjour L'AMI Yves,
L'AMI Yves a écrit :
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern". Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon application
DEUX FOIS !!!!!!!!!




File1.Refresh, après le "Kill" ne fonctionne t-il pas ?

--

Cordialement,

Jacques.
Avatar
L'AMI Yves
"Jacques93" a écrit dans le message de news:

Bonjour L'AMI Yves,
L'AMI Yves a écrit :
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern". Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon application
DEUX FOIS !!!!!!!!!




File1.Refresh, après le "Kill" ne fonctionne t-il pas ?


Ben non, tu penses bien que c'est la première chose que j'ai essayée.
Ensuite, j'ai essayé de modifier le Path (et de revenir, bien sûr), et le
Pattern, et... je ne sais plus tout ce que j'ai essayé.

Mais si tu as bien lu, il faut fermer et ouvrir l'appli DEUX FOIS. C'est
à dire que si j'efface un fichier dans ma fenêtre File, que je ferme mon
appli, et que je la rouvre, le fichier apparait toujours ! (j'ai une
injurebox
si j'essaie encore de l'effacer, faut pas exagérer), ce qui me fait
supposer
que les requêtes que sont là-derrière sont mises en cache dieu sait où.
C'est surtout là-dessus que portait ma demande au groupe.

Merci quand même

--

Cordialement,

Jacques.
Avatar
LE TROLL
' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion + vbYesNo +
vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub




--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour être
complet, j'ai aussi une TextBox où je peux rentrer un "Pattern". Je suis
sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que mon
application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la liste
des fichiers autrement qu'en fermant et rouvrant mon application DEUX FOIS
!!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour tenir
sa liste à jour...

AMIcalement
Avatar
L'AMI Yves
"LE TROLL" <le a écrit dans le message de news:

' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion + vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub



As-tu testé ton programme avec un disque où le cache en écriture est activé
?
Je demande ça, par ce que chez moi, l'ajout des appels à Drive1_Change et
Dir1_Change ne ... change rien du tout.

AMIcalement.



--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern". Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon application
DEUX FOIS !!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour tenir
sa liste à jour...

AMIcalement



Avatar
Jacques93
L'AMI Yves a écrit :

"Jacques93" a écrit dans le message de news:

Bonjour L'AMI Yves,
L'AMI Yves a écrit :
Bonjour à tous.

Je suis en train de développer une application formidable :
tenez-vous bien. J'ai une DriveListBox, une DirListBox et une
FileListBox. Pour être complet, j'ai aussi une TextBox où je peux
rentrer un "Pattern". Je suis sûr que vous ne voyez pas où je veux en
venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec
les précautions d'usage, je "Kill" le fichier désigné. Vous voyez
bien que mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon
application DEUX FOIS !!!!!!!!!




File1.Refresh, après le "Kill" ne fonctionne t-il pas ?


Ben non, tu penses bien que c'est la première chose que j'ai essayée.
Ensuite, j'ai essayé de modifier le Path (et de revenir, bien sûr), et le
Pattern, et... je ne sais plus tout ce que j'ai essayé.

Mais si tu as bien lu, il faut fermer et ouvrir l'appli DEUX FOIS. C'est
à dire que si j'efface un fichier dans ma fenêtre File, que je ferme mon
appli, et que je la rouvre, le fichier apparait toujours ! (j'ai une
injurebox
si j'essaie encore de l'effacer, faut pas exagérer), ce qui me fait
supposer
que les requêtes que sont là-derrière sont mises en cache dieu sait où.
C'est surtout là-dessus que portait ma demande au groupe.




J'ai fait l'essai sous W7 avec VB6 (je n'ai plus VB5). A tout hasard, tu
travailles avec des disques durs "fixes", ou des supports amovibles :
clé USB, mémoire flash, disques SSD, CD/DVD-RW , etc ... ?

--

Cordialement,

Jacques.
Avatar
L'AMI Yves
"Jacques93" a écrit dans le message de news:
%
L'AMI Yves a écrit :

"Jacques93" a écrit dans le message de news:

Bonjour L'AMI Yves,
L'AMI Yves a écrit :
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern".
Je suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon application
DEUX FOIS !!!!!!!!!




File1.Refresh, après le "Kill" ne fonctionne t-il pas ?


Ben non, tu penses bien que c'est la première chose que j'ai essayée.
Ensuite, j'ai essayé de modifier le Path (et de revenir, bien sûr), et
le
Pattern, et... je ne sais plus tout ce que j'ai essayé.

Mais si tu as bien lu, il faut fermer et ouvrir l'appli DEUX FOIS. C'est
à dire que si j'efface un fichier dans ma fenêtre File, que je ferme mon
appli, et que je la rouvre, le fichier apparait toujours ! (j'ai une
injurebox
si j'essaie encore de l'effacer, faut pas exagérer), ce qui me fait
supposer
que les requêtes que sont là-derrière sont mises en cache dieu sait où.
C'est surtout là-dessus que portait ma demande au groupe.




J'ai fait l'essai sous W7 avec VB6 (je n'ai plus VB5). A tout hasard, tu
travailles avec des disques durs "fixes", ou des supports amovibles : clé
USB, mémoire flash, disques SSD, CD/DVD-RW , etc ... ?


Disque fixe avec cache en écriture activé. Je suppose que le pb vien de
là, mais je ne sais pas comment aller plus loin

AMIcalement

--

Cordialement,

Jacques.
Avatar
LE TROLL
Bonsoir,

Affirmatif, c'est testé sur mon disque, j'ai tenté de reproduire ton
modèle (hors la touche <del>), et en fait le RAB se produit quand on fait
de
nouveau appel à dir, drive... Ce qui peut a posteriori sembler normal,
puisque la première fois où ça se lance ça affiche bien le contenu, alors
en
le rappelant ça devrait faire la même chose.

Je ne sais pas ce que c'est que la cache en écriture, cacher quoi,
quelle écriture ? Il n'y a qu'un clique pour tout écriture venant du
clavier
(me concernant), peut être que je connais le "cache en écriture" sous un
autre nom ?

Ce que tu peux déjà faire, c'est prendre une feuille vierge, d'un
programme vierge, mettre drive, dir, list1 en objet, puis copier le code et
lancer, car peut être que certains paramètres modifiés par toi interdisent
un déroulement tel qu'il fonctionne chez moi ? Vb5 e, ou vb6, c'est
quasiment la même chose, j'ai eu vb5 i, puis vb6 i et p, c'est quasi la
même
chose, sauf que le p à accès à davantage d'objets en option, bof...

J'ai fait ça pour ton <del>, mais ça ne change rien, chat marche, à
condition quand même de valider le bon élément dans la liste :

Sub File1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
If KeyCode = 46 Then
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion + vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End If
End Sub


Heu, bizarre ta méthode, déjà de recopier la list1 dans une liste, puis
qu'il faille cliquer à la souris, puis lâcher la souris pour aller faire
<del>, sauf à croiser les mains comme au piano, moi j'aurais mis un popup
(menu surgissant sur double clique), qui proposerait toute la batterie...

Je vais tenter de passer le code sur le forum, peut être que ça va
marcher, et peut être que vb5 acceptera ?

A te lire, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:

"LE TROLL" <le a écrit dans le message de news:

' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion + vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub



As-tu testé ton programme avec un disque où le cache en écriture est
activé ?
Je demande ça, par ce que chez moi, l'ajout des appels à Drive1_Change et
Dir1_Change ne ... change rien du tout.

AMIcalement.



--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable : tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern".
Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon application
DEUX FOIS !!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour
tenir
sa liste à jour...

AMIcalement









Avatar
L'AMI Yves
Je ne comprends pas si tes deux posts sont les mêmes : disons que oui.
Qu'appelles-tu RAB ? "Remise A Blanc" ?
Justement, le cache en écriture fait que deux actions successives
semblables ne donnent pas le même résultat. Tu sauras si ton disque
a le cache en écriture activé en faisant "Clic-droit Poste de
travail/Gérer/
Gestion des disques", puis, dans la case de gauche, où est décrit le disque
physique où réside le répertoire (voire la partition) sur laquelle on
travaille, "Clic-droit/Propriété/Stratégie" ...OUF ! Là tu trouveras une
case
à cocher "Activer le cache d'écriture sur le disque".

Il y a certainement une API pour forcer l'écriture du cache, ou pour
forcer une lecture physique lors du second accès, mais je ne la connais
pas, c'est pourquoi je m'adresse à ce forum.

Pourquoi trouves-tu ma méthode bizarre ? Et d'ailleurs, que connais-tu
de ma méthode : je n'ai pas montré mon source ?

En fait, en l'occurrence, je liste un répertoire contenant un grand nombre
de petits fichiers ".wav". En cliquant, je fais "jouer" le fichier (en le
passant
à l'API "ShellExecute"), et j'ai ensuite "compliqué" mon application en la
dotant d'une facilité pour supprimer les fichiers sans intérêt. Comme le
clic est déjà pris, j'utilise "Suppr" : je fais un "KeyUp" et je teste
"VbDelete":
ça me parait tout à fait limpide, non ?

Toi, tu me dis que chez toi, ça marche, c'est à dire que si tu supprimes un
fichier dans la fenêtre "FileListBox", la liste des fichiers se met bien à
jour ?

"LE TROLL" <le a écrit dans le message de news:

Bonsoir,

Affirmatif, c'est testé sur mon disque, j'ai tenté de reproduire ton
modèle (hors la touche <del>), et en fait le RAB se produit quand on fait
de
nouveau appel à dir, drive... Ce qui peut a posteriori sembler normal,
puisque la première fois où ça se lance ça affiche bien le contenu, alors
en
le rappelant ça devrait faire la même chose.

Je ne sais pas ce que c'est que la cache en écriture, cacher quoi,
quelle écriture ? Il n'y a qu'un clique pour tout écriture venant du
clavier
(me concernant), peut être que je connais le "cache en écriture" sous un
autre nom ?

Ce que tu peux déjà faire, c'est prendre une feuille vierge, d'un
programme vierge, mettre drive, dir, list1 en objet, puis copier le code
et
lancer, car peut être que certains paramètres modifiés par toi
interdisent
un déroulement tel qu'il fonctionne chez moi ? Vb5 e, ou vb6, c'est
quasiment la même chose, j'ai eu vb5 i, puis vb6 i et p, c'est quasi la
même
chose, sauf que le p à accès à davantage d'objets en option, bof...

J'ai fait ça pour ton <del>, mais ça ne change rien, chat marche, à
condition quand même de valider le bon élément dans la liste :

Sub File1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
If KeyCode = 46 Then
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End If
End Sub


Heu, bizarre ta méthode, déjà de recopier la list1 dans une liste,
puis
qu'il faille cliquer à la souris, puis lâcher la souris pour aller faire
<del>, sauf à croiser les mains comme au piano, moi j'aurais mis un popup
(menu surgissant sur double clique), qui proposerait toute la batterie...


Tant qu'à faire, ici, je mettrais un popup menu sur clic-droit. J'ai pensé
à ça
un moment, mais il faut transformer la coordonnée X dans la fenêtre, en
index dans la liste des fichiers : j'ai été dégoût d'avance. De toute
façon, ça
n'aurait rien changé au problème de mise à jour de la liste, il me semble.

Je vais tenter de passer le code sur le forum, peut être que ça va
marcher, et peut être que vb5 acceptera ?

A te lire, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:

"LE TROLL" <le a écrit dans le message de news:

' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub



As-tu testé ton programme avec un disque où le cache en écriture est
activé ?
Je demande ça, par ce que chez moi, l'ajout des appels à Drive1_Change
et
Dir1_Change ne ... change rien du tout.

AMIcalement.



--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message
de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable :
tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern".
Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec
les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien
que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon
application
DEUX FOIS !!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour
tenir
sa liste à jour...

AMIcalement












Avatar
LE TROLL
Bonjour,

Oui, RAB c'est remise à blanc, comme RAZ c'est remise à zéro (RABZ) les
deux, comme RAS c'est rien à signaler.

Le cache en écriture, oui, j'ai compris, j'ai lu un petit article, ça met de
côté les écritures disque en RAM et ça les réécrit quand il n'y a plus
d'accès disque (en gros), oui, bof !
Par contre il n'est pas impossible que ça ralentisse ton traitement, mais il
devrait néanmoins fonctionner.

D'un point de vue conception, non, ce n'est pas limpide ton choix, c'est
"totalement illogique", et je te dis dis ça après avoir fait un grand nombre
de logiciels que tu trouveras ici, donc je parle par expérience :

http://irolog.free.fr

D'une part, le clique sur une liste doit rarement être activé pour produire
un évènement, ceci pour la bonne raison qu'on peut cliquer par erreur, ou
encore cliquer pour surligner un ligne de la liste, sans pour autant vouloir
provoquer une action, donc pour une action le double-clique est bien plus
logique.
D'autre part, comme déjà dit, l'utilisateur a la souris en main (sauf cas
plus rare ceux qui manipulent bien le clavier et se passent en grande partie
de la souris), donc ayant la souris en main, il est normal que toutes les
actions sur la liste qui peuvent se faire avec la souris, soient faites par
la souris, ainsi on ne perd pas la main et on perd moins de temps.

Et bien c'est ce que je te dis, quand tu double-clique sur ta liste, tu
ouvres un menu popUp (surgissant), qui va proposer entre autre :

Ecouter ce fichier
Supprimer ce fichier
... etc ...
abandonner

Oui, ma liste se met à jour comme je j'ai fait, je t'ai envoyé le code sur
le forum, tu peux le recopier, il est zipé.

Bon, je vais voir si j'ai le temps de te faire la totalité de ton
application, comme ça elle marchera, et pour le cache en écriture, ben t'as
qu'a l'enlever.

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:OvK$
Je ne comprends pas si tes deux posts sont les mêmes : disons que oui.
Qu'appelles-tu RAB ? "Remise A Blanc" ?
Justement, le cache en écriture fait que deux actions successives
semblables ne donnent pas le même résultat. Tu sauras si ton disque
a le cache en écriture activé en faisant "Clic-droit Poste de
travail/Gérer/
Gestion des disques", puis, dans la case de gauche, où est décrit le
disque
physique où réside le répertoire (voire la partition) sur laquelle on
travaille, "Clic-droit/Propriété/Stratégie" ...OUF ! Là tu trouveras une
case
à cocher "Activer le cache d'écriture sur le disque".

Il y a certainement une API pour forcer l'écriture du cache, ou pour
forcer une lecture physique lors du second accès, mais je ne la connais
pas, c'est pourquoi je m'adresse à ce forum.

Pourquoi trouves-tu ma méthode bizarre ? Et d'ailleurs, que connais-tu
de ma méthode : je n'ai pas montré mon source ?

En fait, en l'occurrence, je liste un répertoire contenant un grand nombre
de petits fichiers ".wav". En cliquant, je fais "jouer" le fichier (en le
passant
à l'API "ShellExecute"), et j'ai ensuite "compliqué" mon application en la
dotant d'une facilité pour supprimer les fichiers sans intérêt. Comme le
clic est déjà pris, j'utilise "Suppr" : je fais un "KeyUp" et je teste
"VbDelete":
ça me parait tout à fait limpide, non ?

Toi, tu me dis que chez toi, ça marche, c'est à dire que si tu supprimes
un
fichier dans la fenêtre "FileListBox", la liste des fichiers se met bien à
jour ?

"LE TROLL" <le a écrit dans le message de news:

Bonsoir,

Affirmatif, c'est testé sur mon disque, j'ai tenté de reproduire ton
modèle (hors la touche <del>), et en fait le RAB se produit quand on fait
de
nouveau appel à dir, drive... Ce qui peut a posteriori sembler normal,
puisque la première fois où ça se lance ça affiche bien le contenu, alors
en
le rappelant ça devrait faire la même chose.

Je ne sais pas ce que c'est que la cache en écriture, cacher quoi,
quelle écriture ? Il n'y a qu'un clique pour tout écriture venant du
clavier
(me concernant), peut être que je connais le "cache en écriture" sous un
autre nom ?

Ce que tu peux déjà faire, c'est prendre une feuille vierge, d'un
programme vierge, mettre drive, dir, list1 en objet, puis copier le code
et
lancer, car peut être que certains paramètres modifiés par toi
interdisent
un déroulement tel qu'il fonctionne chez moi ? Vb5 e, ou vb6, c'est
quasiment la même chose, j'ai eu vb5 i, puis vb6 i et p, c'est quasi la
même
chose, sauf que le p à accès à davantage d'objets en option, bof...

J'ai fait ça pour ton <del>, mais ça ne change rien, chat marche, à
condition quand même de valider le bon élément dans la liste :

Sub File1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
If KeyCode = 46 Then
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End If
End Sub


Heu, bizarre ta méthode, déjà de recopier la list1 dans une liste,
puis
qu'il faille cliquer à la souris, puis lâcher la souris pour aller faire
<del>, sauf à croiser les mains comme au piano, moi j'aurais mis un popup
(menu surgissant sur double clique), qui proposerait toute la batterie...


Tant qu'à faire, ici, je mettrais un popup menu sur clic-droit. J'ai pensé
à ça
un moment, mais il faut transformer la coordonnée X dans la fenêtre, en
index dans la liste des fichiers : j'ai été dégoût d'avance. De toute
façon, ça
n'aurait rien changé au problème de mise à jour de la liste, il me semble.

Je vais tenter de passer le code sur le forum, peut être que ça va
marcher, et peut être que vb5 acceptera ?

A te lire, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:

"LE TROLL" <le a écrit dans le message de news:

' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub



As-tu testé ton programme avec un disque où le cache en écriture est
activé ?
Je demande ça, par ce que chez moi, l'ajout des appels à Drive1_Change
et
Dir1_Change ne ... change rien du tout.

AMIcalement.



--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message
de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable :
tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern".
Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec
les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien
que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon
application
DEUX FOIS !!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour
tenir
sa liste à jour...

AMIcalement















Avatar
LE TROLL
Tiens, voici le code total de ce que tu veux faire, y a plus qu'à
faire le menu selon les indications, mettre les objets prévus (c'est
indiqué), copier le code et lancer (avec des fichiers Wav), ce qui est un
format trop volumineux si c'est une cnanson, soit dit en passant...




' OBJETS = form1 + drive1 + dir1 + file1 = 4
'
' MENU : configuration
' - menu1, affichage = vide, nom = m_popup, état = invisible
' - ... sous-menu1, affichage = "Ecouter", nom = "m_ecoute"
' - ... sous-menu2, affichage = "Arrêter", nom = "m_stop"
' - ... sous-menu3, affichage = "Supprimer le fichier", nom = "m_sup"
' - ... sous-menu4, affichage = "-", nom = "m_tiret"
' - ... sous-menu5, affichage = "Abandonner", nom = "m_abandonner"
'
Option Explicit
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _
(ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long)
As Long
Private Const SND_ASYNC = &H1
Dim Ras As Boolean
Dim ch As String
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
Form1.Caption = " Gestionnaire de fichier son"
Ras = False
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_DblClick()
ch = Dir1 & "" & File1
PopupMenu m_popup ' m_ecoute + m_stop + m_sup
End Sub

Sub m_ecoute_Click()
Call verif
If Ras = False Then
Ras = Not Ras
Exit Sub
End If
MsgBox "Pour arrêter : doublecliquer sur le nom du fichier ",
vbInformation
PlaySound ch, ByVal 0&, SND_ASYNC
End Sub

Sub verif()
Dim inv As String
inv = StrReverse(ch)
Ras = True
If Len(ch) < 8 Then
MsgBox "Fichier non conforme ", vbExclamation ' c:x.wav = 8
Ras = False
Exit Sub
End If
If Mid(inv, 1, 4) <> "vaw." Then
MsgBox "Ce fichier n'est pas un fichier ""WAV"" ", vbExclamation
Ras = False
Exit Sub
End If
End Sub

Sub m_stop_Click()
PlaySound 0, ByVal 0&, SND_ASYNC
End Sub

Sub m_sup_Click()
Dim r As String
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion + vbYesNo +
vbDefaultButton2)
If r <> vbYes Then Exit Sub
Call verif
If Ras = False Then
Ras = Not Ras
Exit Sub
End If
Call m_stop_Click
Kill ch
Call Drive1_Change
Call Dir1_Change
File1.Refresh
End Sub

Sub Form_Unload(Cancel As Integer)
PlaySound 0, ByVal 0&, SND_ASYNC
End Sub



Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:OvK$
Je ne comprends pas si tes deux posts sont les mêmes : disons que oui.
Qu'appelles-tu RAB ? "Remise A Blanc" ?
Justement, le cache en écriture fait que deux actions successives
semblables ne donnent pas le même résultat. Tu sauras si ton disque
a le cache en écriture activé en faisant "Clic-droit Poste de
travail/Gérer/
Gestion des disques", puis, dans la case de gauche, où est décrit le
disque
physique où réside le répertoire (voire la partition) sur laquelle on
travaille, "Clic-droit/Propriété/Stratégie" ...OUF ! Là tu trouveras une
case
à cocher "Activer le cache d'écriture sur le disque".

Il y a certainement une API pour forcer l'écriture du cache, ou pour
forcer une lecture physique lors du second accès, mais je ne la connais
pas, c'est pourquoi je m'adresse à ce forum.

Pourquoi trouves-tu ma méthode bizarre ? Et d'ailleurs, que connais-tu
de ma méthode : je n'ai pas montré mon source ?

En fait, en l'occurrence, je liste un répertoire contenant un grand nombre
de petits fichiers ".wav". En cliquant, je fais "jouer" le fichier (en le
passant
à l'API "ShellExecute"), et j'ai ensuite "compliqué" mon application en la
dotant d'une facilité pour supprimer les fichiers sans intérêt. Comme le
clic est déjà pris, j'utilise "Suppr" : je fais un "KeyUp" et je teste
"VbDelete":
ça me parait tout à fait limpide, non ?

Toi, tu me dis que chez toi, ça marche, c'est à dire que si tu supprimes
un
fichier dans la fenêtre "FileListBox", la liste des fichiers se met bien à
jour ?

"LE TROLL" <le a écrit dans le message de news:

Bonsoir,

Affirmatif, c'est testé sur mon disque, j'ai tenté de reproduire ton
modèle (hors la touche <del>), et en fait le RAB se produit quand on fait
de
nouveau appel à dir, drive... Ce qui peut a posteriori sembler normal,
puisque la première fois où ça se lance ça affiche bien le contenu, alors
en
le rappelant ça devrait faire la même chose.

Je ne sais pas ce que c'est que la cache en écriture, cacher quoi,
quelle écriture ? Il n'y a qu'un clique pour tout écriture venant du
clavier
(me concernant), peut être que je connais le "cache en écriture" sous un
autre nom ?

Ce que tu peux déjà faire, c'est prendre une feuille vierge, d'un
programme vierge, mettre drive, dir, list1 en objet, puis copier le code
et
lancer, car peut être que certains paramètres modifiés par toi
interdisent
un déroulement tel qu'il fonctionne chez moi ? Vb5 e, ou vb6, c'est
quasiment la même chose, j'ai eu vb5 i, puis vb6 i et p, c'est quasi la
même
chose, sauf que le p à accès à davantage d'objets en option, bof...

J'ai fait ça pour ton <del>, mais ça ne change rien, chat marche, à
condition quand même de valider le bon élément dans la liste :

Sub File1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
If KeyCode = 46 Then
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End If
End Sub


Heu, bizarre ta méthode, déjà de recopier la list1 dans une liste,
puis
qu'il faille cliquer à la souris, puis lâcher la souris pour aller faire
<del>, sauf à croiser les mains comme au piano, moi j'aurais mis un popup
(menu surgissant sur double clique), qui proposerait toute la batterie...


Tant qu'à faire, ici, je mettrais un popup menu sur clic-droit. J'ai pensé
à ça
un moment, mais il faut transformer la coordonnée X dans la fenêtre, en
index dans la liste des fichiers : j'ai été dégoût d'avance. De toute
façon, ça
n'aurait rien changé au problème de mise à jour de la liste, il me semble.

Je vais tenter de passer le code sur le forum, peut être que ça va
marcher, et peut être que vb5 acceptera ?

A te lire, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message de
news:

"LE TROLL" <le a écrit dans le message de news:

' OBJETS = form1 + drive1 + dir1 + file1 = 4
Option Explicit
'

Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dir1 = App.Path
End Sub

Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
End Sub

Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Sub File1_Click()
Dim aSupprimer As String
Dim r As String
aSupprimer = Dir1 & "" & File1
r = MsgBox("Supprimer ce ficher " & vbLf & File1, vbQuestion +
vbYesNo
+ vbDefaultButton2)
If r <> vbYes Then Exit Sub
Kill aSupprimer
Call Drive1_Change
Call Dir1_Change
End Sub



As-tu testé ton programme avec un disque où le cache en écriture est
activé ?
Je demande ça, par ce que chez moi, l'ajout des appels à Drive1_Change
et
Dir1_Change ne ... change rien du tout.

AMIcalement.



--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"L'AMI Yves" a écrit dans le message
de
news:%
Bonjour à tous.

Je suis en train de développer une application formidable :
tenez-vous
bien. J'ai une DriveListBox, une DirListBox et une FileListBox. Pour
être complet, j'ai aussi une TextBox où je peux rentrer un "Pattern".
Je
suis sûr que vous ne voyez pas où je veux en venir...

Dans la routine File_KeyUp, je détecte la touche "Suppr", et, avec
les
précautions d'usage, je "Kill" le fichier désigné. Vous voyez bien
que
mon application est formidable !

Mais il s'avère que je suis absolument incapable de mettre à jour la
liste des fichiers autrement qu'en fermant et rouvrant mon
application
DEUX FOIS !!!!!!!!!

Je précise que je fais ça avec mon très antédiluvien VB 5 Initiation.

Alors merci à ceux qui pourront me dire comment fait Explorer pour
tenir
sa liste à jour...

AMIcalement















1 2