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.02.2001

Diese Seite wurde zuletzt aktualisiert am 13.02.2001
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...

Sicher nachladen

Zurück...


Anzeige

(-hg) mailto:hg_ctlisloaded@aboutvb.de

Da Steuerelementfelder ("Control-Arrays") nicht durchgängig belegt sein brauchen (Ausnahme: Menü-Steuerelemente), können Sie nicht so leicht feststellen, ob ein Element geladen ist oder nicht. Die Prüfung der Unter- oder Obergrenze hilft nämlich nicht weiter.

Sie könnten nun die gesamte Controls-Collection eines Forms (bzw. UserControls oder UserDocuments) durchlaufen und prüfen, ob das betreffende Steuerelement ("MeinControl(Index)") schon vorhanden ist:

Dim nControl As Control

For Each nControl In Controls
   If nControl Is MeinControl(Index) Then
    ' geladen
    Exit For
   End If
Next

Je nach Anzahl der vorhandenen Steuerelemente kann dieser Test in einer Schleife eine gewisse Zeit dauern. Direkter und wahrscheinlich schneller ist wohl der Versuch, auf eine Eigenschaft des betreffenden Steuerelements zuzugreifen und aus einem Fehlschlag daraus zu schließen, dass das Element noch nicht geladen ist.

Public Function CtlIsLoaded(Control As Control) As Boolean
  Dim nTestVisible As Boolean
  Dim nTestLeft As Single
  
  On Error Resume Next
  If TypeOf Control Is Line Then
    nTestVisible = Control.Visible
    CtlIsLoaded = CBool(Err.Number = 0)
  Else
    nTestLeft = Control.Left
    CtlIsLoaded = CBool(Err.Number = 0)
  End If
End Function

Bis auf das Line-Steuerelement verfügen eigentlich alle Steuerelemente über eine Left-Eigenschaft, die Sie daher zur Prüfung verwenden können. Lediglich beim Line-Steuerelement müssen Sie auf eine andere Eigenschaft ausweichen - die Visible-Eigenschaft beispielsweise.

Wenn es Ihnen jedoch lediglich darum geht, nach einem Ladeversuch sicher zu sein, dass ein Steuerelement eines Steuerelementfeldes mit dem gewünschten Index geladen ist, können Sie einen Fehlversuch einfach mit einer Fehlerbehandlung ignorieren:

On Error Resume Next
Load MeinControl(Index)
On Error GoTo 0

Wenn das Steuerelement bereits geladen war, passiert nichts weiter. War es noch nicht geladen, wird es eben geladen.

Dies hat jedoch unter Umständen den Nachteil, dass das Steuerelement danach nicht unbedingt "jungfräulich" ist. Denn die Eigenschaften des bereits geladenen Steuerelements können ja zuvor schon geändert worden sein. Die folgende Funktion SafeLoadControl zum greift daher zunächst auf die obenstehende Funktion CtlIsLoaded zurück, um zu prüfen, ob das Element bereits geladen ist. Ist dies der Fall, wird es entladen. Erst dann wird das gewünschte Element neu geladen. Anderenfalls wird es direkt geladen.

Public Function SafeLoadControl(ControlArray As Object, _
 ByVal Index As Integer) As Control
  If CtlIsLoaded(ControlArray(Index)) Then
    Unload ControlArray(Index)
  End If
  Load ControlArray(Index)
  Set SafeLoadControl = ControlArray(Index)
End Function

Modul modCtlIsLoaded (modCtlIsLoaded.bas - ca. 0,9 KB)


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

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