vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Frage zur Collection "Das aufgerufene Objekt wurde von den Clients getrennt" 
Autor: Sven R
Datum: 27.09.05 17:54

Hallo zusammen,

als Erstes am besten gleich vorweg: Während des Schreibens hat sich eine Lösung gefunden. Warum es nicht so ging wie geplant, ist mir allerdings immer noch nicht klar.

Ich versuche gerade ein DirectDraw-Menü zu erstellen, im Grunde erst einmal nur eine Klasse für Buttons mit den Eigenschaften Größe, Position. Größe und Position sollen dabei als RECT (RECT wird von DirectX mitgeliefert und hat die Eigenschaften Left, Top, Right und Bottom) innerhalb der Klasse gespeichert werden. Es gibt also eine interne Variable iAppearance as RECT, die sich über Property Get und Let verändern lässt...
Public Property Get Appearance() As RECT
    Appearance = iAppearance
End Property
Public Property Let Appearance(R As RECT)
    With R
    iAppearance.Bottom = .Bottom
    iAppearance.Left = .Left
    usw.
... und außerdem eine Funktion, die das Setzen der Informationen erleichert, weil diese nicht immer als RECT vorliegen.
Public Function SetAppearance(Left As Integer, Top As Integer, Right As _
  Integer, Bottom As Integer)
    iAppearance.Bottom = Bottom
    iAppearance.Left = Left
    usw.
Das ganze funktioniert auch wunderbar. Man kann sich Buttons erstellen und auf die Eigenschaften zugreifen, in etwa so...
Button.Appearance.Left = 10
Msgbox Button.Appearance.Left
Nun sollte das ganze ja ein Menü werden und von daher kann man die Buttons die man hat zur Übersichtlichkeit ja auch in eine Collection stecken. Vom wichtigsten Teil her genau nach dem auf vbarchiv.net beschriebenen System (http://www.vbarchiv.net/workshop/workshop37.php) habe ich also eine Klasse erstellt, die Buttons sammelt und auch darüber kann man wieder direkt auf die Eigenschaften der Buttons zugreifen.
Menu.Item(1).Appearance.Left
Innerhalb der Klasse gibt es eine Funktion, die das Menü in eine Datei speichern soll. (Das Collection-Objekt der Klasse nennt sich übrigens mCol.) In der Speicher-Funktion habe ich versucht mit mCol.Item(i).Appearance auf die Größen- und Positionsinformationen zuzugreifen, was mit dem Fehler 80010108 endete.

"Die Methode 'Appearance' für das Objekt '_cls_DirectDrawButton' ist fehlgeschlagen" oder im Direktfenster "Automatisierungsfehler: Das aufgerufene Objekt wurde von den Clients getrennt"

Andere Eigenschaften der Buttons konnte man noch wie gewohnt abfragen. [z.B. mCol.Item(i).Enabled]
Das stellt mich vor ein Rätsel, was ich über die MSDN nicht lösen konnte. Das Problem selbst habe ich ersteinmal gelöst, indem ich die Buttons über "Property Get Item" der Collection-Klasse anspreche, obwohl da auch nichts anderes als "Set Item = mCol.Item(Index)" drin steht. ("mCol.Item" geht nicht, "Item" geht)

Fällt jemandem spontan ein Grund für das Ganze ein? Ist es mal wieder das "Set", das irgendetwas ominöses bewirkt?

Mit freundlichen Grüßen
Sven
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Frage zur Collection "Das aufgerufene Objekt wurde von ...1.356Sven R27.09.05 17:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel