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

Changer l'ordre affichage dans FileListBox

2 réponses
Avatar
Patrick
Bonjour à tous
Est ce qu'il est possible de changer l'ordre d'affichage dans un contrôle
FileListBox ?
L'affichage par défaut est l'ordre alphabétique j'aimerai avoir un ordre par
création du fichier affiché.
Quand 999 fichiers ( pat.001 pat.002 pat.003 ...pat.999) sont affichés le
dernier crée se trouve à la fin moi je préfère l'avoir au début de liste
pour ne pas le chercher.
Merci de votre aide.
A bientôt.

2 réponses

Avatar
ng
Salut,

La meilleure solution est de lister les fichiers toi même en récupérant leur
date de modification afin de les trier dans une listbox (API GetFileTime())
:

'This program needs a Dialog box, named CDBox1
' (To add the Common Dialog Box to your tools menu, go to
Project->Components (or press CTRL-T)
' and select Microsoft Common Dialog control)
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const FO_DELETE = &H3
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String, ByVal
bFailIfExists As Long) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias
"CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As
Long) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA"
(ByVal lpFileName As String) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long,
lpFileSizeHigh As Long) As Long
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long,
lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As
FILETIME) As Long
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, lpSecurityAttributes As Long, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long)
As Long
Private Declare Function SHFileOperation Lib "shell32.dll" Alias
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As
FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime
As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail:
Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
'Set the dialog's title
CDBox.DialogTitle = "Choose a file ..."
'Raise an error when the user pressed cancel
CDBox.CancelError = True
'Show the 'Open File'-dialog
CDBox.ShowOpen
'Create a new directory
CreateDirectory "C:KPD-Team", ByVal &H0
'Copy the selected file to our new directory
CopyFile CDBox.filename, "C:KPD-Team" + CDBox.FileTitle, 0
'Rename the file
MoveFile "C:KPD-Team" + CDBox.FileTitle, "C:KPD-Teamtest.kpd"
'Open the file
lngHandle = CreateFile("C:KPD-Teamtest.kpd", GENERIC_WRITE,
FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
'Get the file's size
MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle,
lngLong)) + " bytes."
'Get the fil's time
GetFileTime lngHandle, Ft1, Ft1, Ft2
'Convert the file time to the local file time
FileTimeToLocalFileTime Ft2, Ft1
'Convert the file time to system file time
FileTimeToSystemTime Ft1, SysTime
MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/" +
LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
'Close the file
CloseHandle lngHandle
'Delete the file
DeleteFile "C:KPD-Teamtest.kpd"
With SHDirOp
.wFunc = FO_DELETE
.pFrom = "C:KPD-Team"
End With
'Delete the directory
SHFileOperation SHDirOp
End
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Patrick wrote:
Bonjour à tous
Est ce qu'il est possible de changer l'ordre d'affichage dans un
contrôle FileListBox ?
L'affichage par défaut est l'ordre alphabétique j'aimerai avoir un
ordre par création du fichier affiché.
Quand 999 fichiers ( pat.001 pat.002 pat.003 ...pat.999) sont
affichés le dernier crée se trouve à la fin moi je préfère l'avoir au
début de liste pour ne pas le chercher.
Merci de votre aide.
A bientôt.


Avatar
Patrick
Bonjour,merci pour la réponse
Je prends note de tes conseils ,pour le moment j'exploite une piste un peu
plus à ma porté.
Trier les fichiers au lancement de l'application dans un fichier *.bat avec
la commande
Dir /b /od c:totopat.* > pat.txt
Après je vais chercher la liste
Dim tout, texte As String

Open "c:toto" & "" & "pat.txt" For Input As #1
Line Input #1, texte
ListBox1.AddItem (texte)
tout = texte
If Len(tout) <> 0 Then
While Not EOF(1)
Line Input #1, texte
ListBox1.AddItem (texte)
tout = tout + (Chr$(13) + Chr$(10)) + texte
Wend
End If
Close #1
Une fois dans la ListBox je ne sais pas récupérer le nom sélectionné.
Voilà .
Je vais lancer un nouveau message:
Est-ce qu'il est possible de récupérer dans un contrôle listbox1 la
sélection ?

Merci pour ta réponse j'ai fais une copie du message pour l'avoir sous la
main.
A Bientôt.



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

Salut,

La meilleure solution est de lister les fichiers toi même en récupérant
leur date de modification afin de les trier dans une listbox (API
GetFileTime()) :

'This program needs a Dialog box, named CDBox1
' (To add the Common Dialog Box to your tools menu, go to
Project->Components (or press CTRL-T)
' and select Microsoft Common Dialog control)
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const FO_DELETE = &H3
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String, ByVal
bFailIfExists As Long) As Long
Private Declare Function CreateDirectory Lib "kernel32" Alias
"CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As
Long) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA"
(ByVal lpFileName As String) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long,
lpFileSizeHigh As Long) As Long
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long,
lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime
As FILETIME) As Long
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, lpSecurityAttributes As Long, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function SHFileOperation Lib "shell32.dll" Alias
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime
As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32"
(lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail:
Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
'Set the dialog's title
CDBox.DialogTitle = "Choose a file ..."
'Raise an error when the user pressed cancel
CDBox.CancelError = True
'Show the 'Open File'-dialog
CDBox.ShowOpen
'Create a new directory
CreateDirectory "C:KPD-Team", ByVal &H0
'Copy the selected file to our new directory
CopyFile CDBox.filename, "C:KPD-Team" + CDBox.FileTitle, 0
'Rename the file
MoveFile "C:KPD-Team" + CDBox.FileTitle, "C:KPD-Teamtest.kpd"
'Open the file
lngHandle = CreateFile("C:KPD-Teamtest.kpd", GENERIC_WRITE,
FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
'Get the file's size
MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle,
lngLong)) + " bytes."
'Get the fil's time
GetFileTime lngHandle, Ft1, Ft1, Ft2
'Convert the file time to the local file time
FileTimeToLocalFileTime Ft2, Ft1
'Convert the file time to system file time
FileTimeToSystemTime Ft1, SysTime
MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/"
+ LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
'Close the file
CloseHandle lngHandle
'Delete the file
DeleteFile "C:KPD-Teamtest.kpd"
With SHDirOp
.wFunc = FO_DELETE
.pFrom = "C:KPD-Team"
End With
'Delete the directory
SHFileOperation SHDirOp
End
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Patrick wrote:
Bonjour à tous
Est ce qu'il est possible de changer l'ordre d'affichage dans un
contrôle FileListBox ?
L'affichage par défaut est l'ordre alphabétique j'aimerai avoir un
ordre par création du fichier affiché.
Quand 999 fichiers ( pat.001 pat.002 pat.003 ...pat.999) sont
affichés le dernier crée se trouve à la fin moi je préfère l'avoir au
début de liste pour ne pas le chercher.
Merci de votre aide.
A bientôt.