vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Standarticon ermitteln und einbinden... 
Autor: Ghosty
Datum: 17.04.04 13:24

Hallo Leutz... ich habe mir mal eine kleine Dateiauswahl selbst gebastelt mittels Treeview. Alles funktioniert wirklich wunderbar. Das einzige, was mir zum Glück noch fehlt, ist das einbinden der "Standarticons" für die Dateien im Treeview. Also ich meine damit die Icons, welche z.B. im Windows-Explodierer angezeigt werden.
Wie kann ich diese ermitteln und vor allem wie teile ich dem Treeview mit, welches Icon aus der Imagelist zu verwenden ist.

Naja, seht Euch doch einfach mal den source an und ich denke es wird klar, was ich damit meine.

Wäre echt toll, wenn mir jemand helfen könnte (Am besten direkt in den source gebastelt).
Danke an Euch alle schonmal im vorraus... Ghosty

Man braucht:
1 x Treeview (tvwDirectory)
1 x Imagelist (ilsTVWDirectory)
1 x DriveListbox (driDrive)
1 x DirListbox) (DirFolders)
1 x FileListbox (filFiles)


Private Declare Function MakePath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Option Explicit

'Konstanten: Laufwerks-Typen
Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6

Private Sub DirFolders_Change()
filFiles.Path = DirFolders.Path
End Sub

Private Sub driDrives_Change()
DirFolders.Path = driDrives.Path
End Sub

Private Sub Form_Load()
Call BuildDriveList
End Sub

Private Sub BuildDriveList()
Dim i As Integer
Dim strPath As String
Dim intIcon As Integer
Dim sBuffer As String * 255
Dim sDrives As String
Dim lResult As Long
Dim sDrive As String
Dim sPos As Integer
Dim lType As Long
lResult = GetLogicalDriveStrings(Len(sBuffer), sBuffer)
sDrives = Left$(sBuffer, lResult)
While Len(sDrives) > 0
sPos = InStr(sDrives, Chr$(0))
sDrive = Left$(sDrives, sPos - 1)
sDrives = Mid$(sDrives, sPos + 1)
lType = GetDriveType(sDrive)
Select Case lType
Case DRIVE_REMOVABLE: intIcon = 1
Case DRIVE_FIXED: intIcon = 2
Case DRIVE_CDROM: intIcon = 3
Case DRIVE_REMOTE: intIcon = 4
Case DRIVE_RAMDISK: intIcon = 5
End Select
tvwDirectory.Nodes.Add , , sDrive, sDrive, intIcon
tvwDirectory.Nodes.Add sDrive, tvwChild, ""
Wend
End Sub

Private Sub tvwDirectory_Expand(ByVal Node As ComctlLib.Node)
On Error GoTo ErrorTrapping
Dim i As Integer
Dim strRelative As String
Dim strFolderName As String
Dim intFolderPos As Integer
Dim intIcon As Integer
Dim strNewPath As String
Dim strExt As String
Dim intExtPos As Integer
MousePointer = vbHourglass
If Node.Child.Text = "" Then
tvwDirectory.Nodes.Remove Node.Child.Index
strRelative = Node.Key
DirFolders.Path = strRelative
intFolderPos = Len(strRelative) + 1
' Unterverzeichnisse hinzufügen
For i = 0 To DirFolders.ListCount - 1
strFolderName = Mid(DirFolders.List(i), intFolderPos)
strNewPath = strRelative & strFolderName & "\"
tvwDirectory.Nodes.Add strRelative, tvwChild, strNewPath, strFolderName, 6
DirFolders.Path = strNewPath
If (filFiles.ListCount > 0) Or (DirFolders.ListCount > 0) Then
tvwDirectory.Nodes.Add strNewPath, tvwChild, , ""
tvwDirectory.Nodes(strNewPath).ExpandedImage = 7
End If
DirFolders.Path = strRelative
Next

' Dateien hinzufügen
For i = 0 To filFiles.ListCount - 1
strExt = UCase(filFiles.List(i))
intExtPos = InStr(strExt, ".") + 1
If intExtPos > 0 Then strExt = Mid(strExt, intExtPos) Else strExt = ""

'Aaaaahhhhh, es muß doch einen einfacheren Weg geben als jedem Dateizyp eine extra
'Nummer zuzuweisen !!!

Select Case strExt
Case "TXT", "DOC": intIcon = 11
Case "HLP": intIcon = 10
Case "EXE", "COM": intIcon = 9
Case "BMP", "JPG", "GIF": intIcon = 8
Case Else
intIcon = 10
End Select

tvwDirectory.Nodes.Add strRelative, tvwChild, , filFiles.List(i), intIcon

Next
End If
GoTo EndSub
ErrorTrapping:
tvwDirectory.Nodes.Add Node.Key, tvwChild, , ""
Resume EndSub
EndSub:
MousePointer = vbDefault
End Sub

...das Leben iss schei... aber die Grafik iss geil !

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Standarticon ermitteln und einbinden...590Ghosty17.04.04 13:24
Re: Standardicon ermitteln und einbinden...318Zardoz17.04.04 18:46
Re: Standardicon ermitteln und einbinden...290Ghosty18.04.04 08:18

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel