cantan
Goto Top

VB DriveListbox mit gesetzten Anfangswert (Laufwerk)

Hallo Gemeinde

Ich versuche jetzt schon etwas längere Zeit in meinem VB Code
inkl. meiner DriveListBox, dieser beizubringen, dass sofort nach dem
Start meine Anwendung dort Drive A: ausgewählt und als Standard
ausgwählt ist. Ohne zusätzlichen Mausevent.

Derzeit sieht meine Code zur Listbox wie folgt aus:

Private Sub Drive1_Change()
    Dim DriveLetter$, DriveNumber&, DriveType&
    DriveLetter = UCase(Drive1.Drive)
    DriveNumber = (Asc(DriveLetter) - 65)
    DriveType = GetDriveType(DriveLetter)
    
    If DriveType = 2 Then 'Disklaufwerke und Laufwerke mit austauschbarem Datenträger  
        cmdDiskCopy.Enabled = False
    Else
        cmdDiskCopy.Enabled = True
    End If
End Sub

Ok, dass ist noch keine Kunst und so habe ich schon einmal
meiner DriveListBox einen Index hinzugefügt. Ungefähr so!

Private Sub Form_Load()
  With Drive1           'Name meiner Listbox  
   .ListIndex = 1      ' Anzeige bei Start des Programms soll das Disklaufwerk sein  
  End With
End Sub

Leider klappt dies aber garnicht, so dass derzeit immer noch als Standard
dort mein Laufwerk "C:\XYZ "angezeigt und ausgewählt ist!

Wie kann ich meiner DriveListBox bei bringen sofort dort das Disk. Laufwerk a:
ausgewählt zu haben?

Bin wie immer für alle (auch noch so kleien Tipps) Dankbar.
CanTan

Content-ID: 113019

Url: https://administrator.de/contentid/113019

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

bastla
bastla 01.04.2009 um 23:10:40 Uhr
Goto Top
Hallo CanTan!

Um ein bestimmtes Laufwerk vorzugeben, kannst Du die Eigenschaft ".Drive" verwenden, also etwa
<code type"=plain">Drive1.Drive = "A:"

Grüße
bastla
CanTan
CanTan 01.04.2009 um 23:44:31 Uhr
Goto Top
Hallo Bastla,
frei nach dem Beispiel aus:
http://www.vbarchiv.net/tipps/details.php?id=526
suche ich nun schon mal die entsprechende Laufwerk
und definiere das z.B die FestplattenDatenträger nicht
aufzutauchen haben .... tja und nun habe ich Deinen
Tipp befolgt und bin keinen millimeter weiter, da ich nicht
weiß wo ich ihn ansetzen soll?

Private Sub Form_Load()
    DriveShow Drive1, False, False, True, False, False, True  ' hier werden die nutzbaren LW definiert  
    Drive1.Drive = "A:"  'dein Tipp hier eingefügt führt zur Fehlermeldung  
    End Sub
°°°°face-sad
bastla
bastla 02.04.2009 um 00:14:11 Uhr
Goto Top
Hallo CanTan!

Meine Antwort beruhte auf Deiner umfangreichen Problembeschreibung (die allerdings noch nicht einmal die VB-Version und schon gar nicht den nachgereichten Hinweis auf das Ausblenden von Laufwerken enthielt) ...

... und sollte trotzdem funktionieren, wenn Du Dich dazu entschließen könntest, auch für bShowRemovable ein True zu übergeben, also:
 DriveShow Drive1, True, False, True, False, False, True  ' hier werden die nutzbaren LW definiert  
Drive1.Drive = "A:"  
Grüße
bastla

P.S.: Ob Dir wohl die Fehlermeldung hätte weiterhelfen können? (Mir schon ...)
CanTan
CanTan 02.04.2009 um 23:26:30 Uhr
Goto Top
Nabend Bastla,
es beschämt mich schon ein bisschen, Dich wegen so etwas
anscheind labidaren zu belästigen aber vllt. hilfts ja auch mal
wem anderen weiter.

Eine Fehlermeldung gibt es auch. Dies kommt aber nur, wenn keine Diskette eigelegt ist!
Zitat: "Wenn bei GetDrive ein ungültiges Laufwerk angegeben wird, erscheint der Laufzeitfehler 68 "Gerät nicht verfügbar" (bei nicht existierendem Laufwerk) oder der Laufzeitfehler 71 "Datenträger nicht bereit" (z.B. bei Diskettenlaufwerk ohne eingelegte Diskette oder CD-ROM-Laufwerk ohne eingelegte CD).

Soweit so gut und steckt also eine Diskette im Laufwerk scheint alles top.
Doch wie fange ich dies per Errorhandling ab, wenn noch keine Diskette im Laufwerk steckt?

Ach ja: M$ VB 6.0 SP6
bastla
bastla 03.04.2009 um 00:06:07 Uhr
Goto Top
Hallo CanTan!
Doch wie fange ich dies per Errorhandling ab, wenn noch keine Diskette im Laufwerk steckt?
Die Frage, was bei einem Fehler geschehen soll, musst Du für Dich selbst beantworten - rein technisch gesehen könnte das Abfangen des Fehlers etwa so realisiert werden:
Private Sub Form_Load()
DriveShow Drive1, False, True, True, False, False, True
On Error GoTo ErrorHandler 'Fehlerbehandlung festlegen  
SetDrive: 'für Rücksprung zum neuerlichen Versuch  
Drive1.Drive = "A:"  
On Error GoTo 0 'Fehlerbehandlung wieder auf Standard setzen  
'Fortsetzung, wenn es keinen Fehler (mehr) gibt ...  
'  
' was eben so anliegt ...  
'  
Exit Sub

ErrorHandler:
Select Case Err.Number
Case 68
    MsgBox "Laufwerk nicht bereit!"  
Case 71
    Ret = MsgBox("Kein Datenträger eingelegt!", vbAbortRetryIgnore)  
    If Ret = vbRetry Then Resume SetDrive 'neuer Versuch ...  
Case Else
    MsgBox "Unbekannter Fehler aufgetreten!"  
End Select
'Soferne kein "Resume" erfolgt ist, geht es hier  
'für alle Arten von Fehlern weiter ...  
'  
End Sub
Grüße
bastla
CanTan
CanTan 05.04.2009 um 20:46:14 Uhr
Goto Top
Danke bastla....tat funkt erst mal besten.
Manchmal braucht man eben einen leichten auf den Hinterkopf!
dank Dir