Deutsch
Forum

Klassenobjekt neu erstellen

 

Jörg
Sellmeyer
Wenn ich eine Klasse habe und mit New ein neues Objekt erstellt habe:
Ist es möglich das Objekt zu zerstören und den gleichen Bezeichner wieder mit New(...) zu verwenden?

Wenn ich z. B. mit
TB# = New(RGHToolbar,%hwnd,hToolbarBmp&,0,tbHight%,ID%,0)
eine Toolbar erstelle.
und die mit
DestroyWindow(TB#.GetHandle())
abschieße, gibts nach neuem:
TB# = New(RGHToolbar,%hwnd,hToolbarBmp&,0,tbHight%,ID%,0)
eine Fehlermeldung.
DeleteObjekt TB# oder Clear TB# bringen auch nichts, b. z. w. Fehlermeldung.
KompilierenMarkierenSeparieren
Declare appexit%,TB#
 $H WINDOWS.PH
 $H commctrl.ph
 $I RGHTOOLBAR.INC
Def GetSysColor(1) !USER32,GetSysColor
Def TBClicked(1) Abs(%menuitem) = &(1)
UserMessages 16

Proc MyToolBar

    TB# = New(RGHToolbar,%HWnd,0,2,0,2000,0)
    TB#.AddButton(0,2000,Button 1)
    TB#.Separator()
    TB#.AddButton(10,2001,Button 2)
    TB#.AddButton(10,2002,Button 3)
    TB#.Separator()
    TB#.AddButton(3,2003,Button 4)
    TB#.AddButton(4,2004,Button 5)
    TB#.CheckButton(2004,1)
    TB#.HideButton(2004)
    TB#.Separator()
    TB#.AddButton(3,2005,Ende)

EndProc

WindowTitle Test
WindowStyle $023A
SetTrueColor 1
Window 100,100-270,64
Cls GetSysColor(15)
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
MyToolBar

WhileNot appexit%

    WaitInput
    Case Or(%umessage = 16,appexit% > 0):Break

    If TBClicked(2005)

        appexit% = 1

    ElseIf TBClicked(2000)

        DestroyWindow( TB#.GetHandle())
        DeleteObject TB#bewirkt nichts
        Clear TB#Fehlermeldung
        MyToolBarFehlermeldung

    ElseIf TBClicked(2001)

        WindowTitle Button 2 gedrückt

    ElseIf TBClicked(2002)

        WindowTitle Button 3 gedrückt

    ElseIf TBClicked(2003)

        Engage% = 1
        TB#.HideButton(2003)
        TB#.ShowButton(2004)

    ElseIf TBClicked(2004)

        Engage% = 0
        TB#.HideButton(2004)
        TB#.ShowButton(2003)

    EndIf

Wend


Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.08.2006  
 




RGH
Hallo Jörg,
ein Objekt wird ebenso wie ein Bereich mit Dispose freigegeben. Also einfach Dispose TB# hinter DestroyWindow(TB#.GetHandle()) einfügen und es klappt!

Die Funktion NEW macht zunächst dasselbe wie DIM, und ruft anschließend den Konstruktor auf. Deshalb sollten auch alle mit NEW erzeugten Objekte nach Gebrauch mit DISPOSE freigegeben werden.

Gruß
Roland
(mitten in den Urlaubsvorbereitungen)
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
25.08.2006  
 




Jörg
Sellmeyer
manchmal hab ich echt ein Brett vorm Kopf!
Danke Roland.
Viel Spaß im Urlaub!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.08.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.180 Betrachtungen

Unbenanntvor 0 min.
Jörg Sellmeyer24.01.2013
Michael Borowiak23.07.2011

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Jörg Sellmeyer (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie