modale Form - Ereignis wird nicht ausgelöst

24/06/2008 - 11:50 von Josef Morlo | Report spam
Hallo allerseits,

Es geht darum, in einer (modalen) Suchform nach Nutzereingabe eine Datei zu
finden und den Pfad an die aufrufende Form zu übergeben.

Folgender Code (gekürzt):

1.'Form 'Startform'
'Button 'btnSuche"

2.Form 'Suchform':
'code, der mir ein Array mit Suchpfaden zusammenstellt
'Button 'btnStarteSuche
'txtGesuchteDatei
_______________________________________________________

Code in 'Startform':

Private WithEvents frm As Suchform
Private mPfad As String

Private Sub btnSuche_Click()
On Error GoTo Errorhandler

...


Set frm = new Suchform

With frm
.txtGesuchteDatei = "Gesuchte Datei"
.Show vbModal, Me
End With

Set frm = Nothing

...

End Sub


Private Sub frm_DateiGefunden(Pfad As String) 'wird nicht ausgelöst

mPfad = Pfad
MsgBox mPfad 'wird nicht aufgerufen

End Sub



=

Code in 'Suchform':

Option Explicit
Public Event DateiGefunden(Pfad As String)
Private mPfad as String
Private mSuchArray() as String

...

Private Sub btnStarteSuche_Click()
On Error GoTo Errorhandler


Dim L As Long
Dim Pfad as String

'Eingaben möglicher Suchpfade durch den Nutzer werden durchlaufen
For L = LBound(mSuchArray()) To UBound(mSuchArray())

'Suche über Windows API 'SearchTreeForFile'realisiert
Pfad = FindFile(mSuchArray(L), Me.txtGesuchteDatei)

If Len(Pfad) > 0 Then
mPfad = Pfad
Exit For
End If
Next


Unload Me

'funktioniert bis hierher

End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
RaiseEvent DateiGefunden(mPfad) 'wird nicht ausgelöst
'MsgBox mPfad 'wird korrekt ermittelt
End Sub

...

Der Ansatz müsste doch korrekt sein(?). Woran könnte es denn liegen, dass
das Ereignis nicht ausgelöst wird?

Grüße und danke für Hinweise

Josef Morlo
 

Lesen sie die antworten

#1 Harald M. Genauck
24/06/2008 - 13:38 | Warnen spam
Hallo Josef,

Es geht darum, in einer (modalen) Suchform nach Nutzereingabe eine
Datei zu
finden und den Pfad an die aufrufende Form zu übergeben.
...
Folgender Code (gekürzt):

1.'Form 'Startform'
'Button 'btnSuche"

2.Form 'Suchform':
'code, der mir ein Array mit Suchpfaden zusammenstellt
'Button 'btnStarteSuche
'txtGesuchteDatei
_______________________________________________________

Code in 'Startform':

Private WithEvents frm As Suchform
Private mPfad As String

Private Sub btnSuche_Click()
On Error GoTo Errorhandler

...


Set frm = new Suchform

With frm
.txtGesuchteDatei = "Gesuchte Datei"
.Show vbModal, Me
End With

Set frm = Nothing

...

End Sub


Private Sub frm_DateiGefunden(Pfad As String) 'wird nicht ausgelöst

mPfad = Pfad
MsgBox mPfad 'wird nicht aufgerufen

End Sub
...

Der Ansatz müsste doch korrekt sein(?). Woran könnte es denn liegen,
dass
das Ereignis nicht ausgelöst wird?



Ist schon etwas lànger her, dass ich mich mit VB6 beschàftigt habe...
Aber soweit ich mich erinnere, könnte das am modalen Aufruf liegen,
dass kein Ereignis zurückkommt.

Aber warum überhaupt der Umweg über ein Ereignis? Warum nicht den
gefundenen Pfad gleich als Rückgabewert eines modifizierten modalen
Aufrufs des Suchforms? Siehe:
http://www.aboutvb.de/khw/artikel/khwshowdlg.htm


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen