ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 13.03.2000

Diese Seite wurde zuletzt aktualisiert am 13.03.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Ladezustandskontrolle

Zurück...


Anzeige

(-hg) mailto:hg_isformloaded@aboutvb.de

Seit jeher hat ein Zugriff auf eine Standard-Eigenschaft eines Forms oder eines der darauf platzierten Steuerelemente zur Folge, dass das Form geladen wird. Mindestens aus diesem Grund kann die Information, ob ein Form bereits geladen ist oder nicht, recht nützlich sein. Es gibt allerdings keine Form-Eigenschaft, die Ihnen diese Information frei Haus liefern würde.

Die naheliegendste Möglichkeit ist, einfach in der Forms-Sammlung nachzuschauen, ob das betreffende Form dort enthalten und somit geladen ist. Da die Forms-Sammlung keinen Zugriff über einen Namen oder Schlüssel ermöglicht, sondern nur über eine Index-Nummer, können Sie jedoch nicht direkt ermitteln, ob das Form in der Forms-Sammlung enthalten ist. Es bleibt Ihnen nichts anderes übrig, ein Form aus der Sammlung nach dem anderen mit dem betreffenden Form zu vergleichen. Ist einer dieser Vergleiche erfolgreich, können Sie die Suchschleife mit einer Erfolgsmeldung verlassen. Anderenfalls wird die Schleife ohne Erfolgsmeldung bis zum Ende durchlaufen.

Public Function IsFormLoaded(Form As Form) As Boolean
  Dim nForm As Form
  
  For Each nForm In Forms
    If nForm Is Form Then
      IsFormLoaded = True
      Exit For
    End If
  Next
End Function

Die Funktion IsFormLoaded prüft, ob ein Form geladen ist

Selbst wenn Sie die Information über Ladezustände von Forms häufiger benötigen, brauchen Sie sich eigentlich keine Gedanken bezüglich der Performance zu machen. Die paar wenigen geladenen Forms in der Forms-Sammlung sind schließlich sehr schnell durchlaufen. Und falls Sie doch einen spürbaren Performance-Verlust wahrnehmen sollten, dann haben Sie einfach zu viele Forms gleichzeitig geladen. Das sollte dann aber eher ein Anreiz sein, das Design Ihrer Anwendung zu überdenken und zu optimieren, als ein Anreiz, nach einer schnelleren Möglichkeit zur Prüfung des Ladezustands eines Forms zu suchen. Denn die Performance-Verluste, die Sie sich per se schon durch zu viele gleichzeitig geladen Forms einhandeln, wiegen tatsächlich zig-fach schwerer...

Bei der Prüfung über die Forms-Sammlung sollten Sie allerdings eines bedenken: Das betreffende Form befindet sich sofort nach dem expliziten Laden bzw. dem ersten Zugriff in der Forms-Sammlung. Es ist also bereits beim Eintritt in die Form_Load-Ereignisprozedur darin enthalten. Umgekehrt wird es erst nach Abschluss der Bearbeitung des Unload-Ereignisses aus der Forms-Sammlung entfernt.

Wenn Sie jedoch statt dessen wissen wollen, ob ein Form geladen UND das Load-Ereignis abgearbeitet ist, das Form als tatsächlich vollständig samt allen darauf befindlichen Steuerelementen vollständig geladen ist, ist die Prüfung der Forms-Sammlung nicht sonderlich sinnvoll. Deklarieren Sie in diesem Fall eine Form-weit gültige private Variable des Datentyps Boolean (zum Beispiel pLoaded genannt) und ermöglichen Sie den Zugriff darauf über die selbstdefinierte Eigenschaft "Loaded". Diese Variable setzen Sie als letztes in der Form_Load-Ereignisprozedur gleich True. Umgekehrt setzen Sie diese Variable als letztes in der Form_Unload-Ereignisprozedur wieder auf False - allerdings nur dann, falls Sie dort nicht zuvor den Cancel-Parameter auf True gesetzt haben sollten und das Form somit tatsächlich entladen wird.

Private pLoaded As Boolean

Public Property Get Loaded() As Boolean
  Loaded = pLoaded
End Property

Private Sub Form_Load()
  ' Diverser Code in dieser Ereignisprozedur

  pLoaded = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
  ' Diverser Code in dieser Ereignisprozedur

  pLoaded = False
End Sub

Über die selbstdefinierte Eigenschaft Loaded kann das Form darüber informieren ob es samt allen darauf platzierten Steuerelementen vollständig geladen bzw. entladen ist


Modul modIsFormLoaded (modIsFormLoaded.bas - ca. 0,5 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer