Ab wann ist ein Form Screen.Activeform

30/11/2009 - 21:00 von Ekkehard Böhme | Report spam
Hallo,
Entschuldigt den etwas komischen Betreff.
Zum Hintergrund; ich veruche mich gerade daran meinen Leitdatencheck in
eine Klasse zu packen (ist meine erste eigene).
Die sieht bis jetzt so aus:

Option Compare Database
Option Explicit
Private m_frm As Form

Public Property Get AdressForm() As Form

Set AdressForm = m_frm

End Property

Public Property Set AdressForm(ByRef vNewValue As Form)

Set m_frm = vNewValue

End Property

m_frm soll das Form sein, das mit der Klasse arbeiten soll.

Da sieht es jetzt so aus:

Option Compare Database
Option Explicit
Private m_objAdresse As clsAdresse

Private Sub Form_Load()

Set m_objAdresse = New clsAdresse
Set m_objAdresse.AdressForm = Me

End Sub

So "làuft" das auch.

Zurück zur Frage:
Mein erster Versuch war:

Private Sub Class_Initialize()
Set AdressForm = Screen.ActiveForm
End Sub

Und im Form dann nur:

Set m_objAdresse = New clsAdresse

Da bekomme ich aber sowohl bei Form_Open (kann ich gerade noch vestehen)
als auch bei Form_Load den Fehler 2475, Sie haben einen Ausdruck
eingegeben, für den es erforderlich ist, dass das aktive Fenster ein
Formular ist.

Wie gesagt, funkt es ja mit der Zuweisung im Form, aber es würde mich
schon interessieren wann ein Form denn nun als solches erkannt wird.
Ich habe auch Form_Current probiert, gleicher Fehler. Form_Activate kann
ich nicht benutzen, da dann ja die Klasse jedesmal neu erstellt wird,
wenn des Form Mal den Focus verliert (dürfte aber auch so oder so nicht
funzen, da es ja noch vor Current eintritt, probiert habe ich es nicht).

Falls da jemandem was zu einfàllt würde ich mich freuen was lernen zu
können.

gruss ekkehard
 

Lesen sie die antworten

#1 Stefan Dase
01/12/2009 - 08:09 | Warnen spam
Moin Ekkehard,

du bist ja auch wieder ganz aktiv hier in der NG.

(...)
Wie gesagt, funkt es ja mit der Zuweisung im Form, aber es würde mich
schon interessieren wann ein Form denn nun als solches erkannt wird.



Bei den Ereignissen Form_Open und Form_Load ist das Laden noch nicht
abgeschlossen. Wie du selber erkannt hast, kannst du deswegen nicht mit
Screen.ActiveForm darauf zugreifen.

Ich habe auch Form_Current probiert, gleicher Fehler.



Hier würde ich erwarten, dass eine Zuweisung möglich ist. Tritt dieser
Fehler bei jedem Form_Current auf, oder nur beim ersten nach dem Laden?

Ansonsten macht eine Verwendung im Form_Current keinen Sinn, da du dann
jedes Mal das Objekt neu zuweisen würdest. Außerdem ist die Auswertung
von Screen.ActiveForm eine potentielle Fehlerquelle. Was passiert z.B.,
wenn durch eine Funktion gleichzeitig zwei Formulare geöffnet werden?
Oder ein Bericht den Fokus besitzt?

Von daher ist das explizite Verweisen auf Me der bessere und
funktionierende Weg!

Viele Grüße von der anderen Weserseite,
Stefan

P.S.: In letzter Zeit mal etwas von Doerthe gehört/gelesen?

Ähnliche fragen