o:destroy() & OWnerdraw Menu

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

o:destroy() & OWnerdraw Menu

Beitrag von AUGE_OHR »

moin,

ich habe eine Thread-CRT Class auf einem Tabpage welche eine OW Menu
hat. Nun ist es mir durchaus klar das ich den Thread erst "stoppen" muss
,der auf der Tabpage ist, bevor ich die Tabpage selbst :destroy() kann.

Nun scheint es aber so das ich auch die OW Menus (incl. Submenu) vorher
:destroy() muss, den wenn es die Tabpage:destroy selbst aufruft "hängt"
er am "recursiven" aufruf ?!

Code: Alles auswählen

RETURN ::XbpMenu:Destroy()  // hier im OW Menu hängt er bei recursiv ?
hat das jemand schon mal beobachtet ?

Nun muss ich also erst per Childlist() die OW Menus :destroy(), dann
das oThread:oCrt Object bevor ich den Thread selbst terminieren kann
um die Tabpage zu zerstören :

Code: Alles auswählen

FOR i = 1 TO iMax                            // alle Tabpages

   // evtl. Childs auf der Tabpage ?
   aCrt := aTabObj[i]:Childlist()

   IF LEN(aCrt) > 0
      // zuerst die "Child Objecte" zerstören
      jMax := LEN(aCrt)
      // das sind die OW Menus
      FOR j = jMax TO 2 STEP -1
         aCrt[j]:Destroy()
      NEXT

      // nur kontrolle
      aCrt := aTabObj[i]:Childlist()
      ALTD()

      // jetzt den Thread selbst
      // oThread:oCrt:destroy()
      // oThread:setInterval( NIL )
      // oThread:destroy()
      // o = NIL
      DO CASE
         CASE i = 1 ; oArtikel:oCrt:destroy()  ; oArtikel:setInterval( NIL ...
         ...
         CASE i = 7 ; oEnde:oCrt:destroy()     ; oEnde:setInterval( NIL... 
      ENDCASE
   ENDIF

   // jetzt den TabPage zerstören
   aTabObj[i]:Destroy()
NEXT
ziemlich "umständlich" das ganze. gibt es nicht einen "eleganteren" Weg ?

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

du hast ein Menü auf einer TabPage ?

Ich meine gelesen zu haben, dass Menüs nur in Fenstern erlaubt sind, die den AppDesktop als Parent haben ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: du hast ein Menü auf einer TabPage ?

Ich meine gelesen zu haben, dass Menüs nur in Fenstern erlaubt sind, die den AppDesktop als Parent haben ?
sorry hätte sagen sollen das es Pop-Up Menus sind die ich unter den
"TAB" der Tabpage gehängt habe. Die Idee hab ich dir übrigens von
dem Flatbutton geklaut wo du bei "drüberfahren" ein Menu aufgemacht
hast.

Code: Alles auswählen

STATIC FUNCTION JOBWAHL4(aTabObj,nNo,oMachine,oStatbar)
LOCAL  oTab     := aTabObj[nNo]   // aktive Tabage
STATIC oMenu    := NIL
STATIC oDruMenu := NIL

IF oUmsatz = NIL
   // Thread CRT starten
   oUmsatz   := CrtThread():new():create(oTab,oMachine,"Umsatz")
   oUmsatz:Start()
   oUmsatz:oWait:signal()

   oMenu    := XbpImageMenu():new( oTab ):create()
   oDruMenu := XbpImageMenu():new( oTab ):create()

   oDruMenu:title  := "~4 Drucken  "
   oDruMenu:addItem( { "1 Umsatz Liste", {|| JW4MEHR( 9,aTabObj,nNo,oStatbar) },,XBPMENUBAR_MIA_OWNERDRAW},)
   oDruMenu:addItem( { "F10-Zur
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

AUGE_OHR hat geschrieben:Die Idee hab ich dir übrigens von
dem Flatbutton geklaut wo du bei "drüberfahren" ein Menu aufgemacht
hast.
Die Flatbottoms sind nicht von mir. ;-)
Gruß
Hubert
Antworten