o:rbClick := {| aPos, uNIL, oObj | myPOPUP() } ... destroy()

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

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

o:rbClick := {| aPos, uNIL, oObj | myPOPUP() } ... destroy()

Beitrag von AUGE_OHR »

hi,

ich frage mich wie ich ein erzeugtes PopUp Menue "o:destroy()"e ?
... oder muss ich das nicht ?

Code: Alles auswählen

...
oXbp5:rbClick := {| aPos, uNIL, oObj | RATEPOPUP( PopAbsPos(oMainDlg),oMainDlg,oRate,oXbpPB5), SAVENOW(aEditControls) }
   oXbp5:create()
...

PROCEDURE        RATEPOPUP(aPos,oObj,oRate,oXbpPB5)
LOCAL oMenu

   oMenu := SUBRATE(oObj,oRate,oXbpPB5)
   oMenu:PopUp( oObj, aPos, 2 , ;
              XBPMENU_PU_DEFAULT + XBPMENU_PU_MOUSE_RBDOWN  )

// geht nicht weil er das dann "gleich tut" ?
//
* oMenu:destroy()

RETURN

FUNCTION         SUBRATE(oMenu,oRate,oXbpPB5) 
LOCAL oSubMenu

   oSubMenu       := XbpImageMenu():new( oMenu )
   oSubMenu:title := "~Rate"
   oSubMenu:create()

   oSubMenu:addItem( { "  ~6.0", {|| oRate:setdata("6") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~5.0", {|| oRate:setdata("5") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~4.0", {|| oRate:setdata("4") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~3.0", {|| oRate:setdata("3") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~2.0", {|| oRate:setdata("2") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~1.0", {|| oRate:setdata("1") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )
   oSubMenu:addItem( { "  ~0.0", {|| oRate:setdata("0") , PostAppEvent(xbeP_Activate,,,oXbpPB5) } ,,XBPMENUBAR_MIA_OWNERDRAW  } )

RETURN oSubMenu

achso und noch eine Frage : wie kann ich mit der Maus so ein PopUp
schliessen wenn ich keine Auswahl treffe (K_ESC) ? mit der Maus wo
anders "hin-clicken" geht hier nicht weil das PopUp auch im Mediaplayer
"FullScreen" Modus arbeitet.

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: o:rbClick := {| aPos, uNIL, oObj | myPOPUP() } ... destr

Beitrag von AUGE_OHR »

AUGE_OHR hat geschrieben: achso und noch eine Frage : wie kann ich mit der Maus so ein PopUp
schliessen wenn ich keine Auswahl treffe (K_ESC) ? mit der Maus wo
anders "hin-clicken" geht hier nicht weil das PopUp auch im Mediaplayer
"FullScreen" Modus arbeitet.
die Frage wurde nun in :

Inoffizielles deutsches Xbase-Forum Foren-Übersicht » Programmierung allgemein » Contextmenu

beantwortet. Das wäre doch was für die "Wissensbassis"

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: o:rbClick := {| aPos, uNIL, oObj | myPOPUP() } ... destr

Beitrag von AUGE_OHR »

moin,
AUGE_OHR hat geschrieben: ... wenn ich keine Auswahl treffe (K_ESC) ?
auch das hab ich nun raus, mit Hilfe von EventSpy :

Wenn sich ein Pop-Up Menu schliesst wird "xbeMENB_EndMenu" erzeugt.
Wenn nun ein Item gewählt wurde wird "xbeP_ItemSelected" erzeugt.

ergo ist also kein "xbeP_ItemSelected" nach einem "xbeMENB_EndMenu"
so muss der User "abgebrochen" (z.B. K_ESC) haben.

Code: Alles auswählen

      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      DO CASE
         // Pop-Up Menu wurde beendet
         CASE nEvent = xbeMENB_EndMenu

              // nächster Event 
              nEvent := NextAppEvent()

              // Item wurde gewählt 
              IF nEvent = xbeP_ItemSelected
                  // "normal" weiter
              ELSE
                 // ist ein Ownerdraw XbpMenu() 
                 IF oXbp:isDerivedFrom( "XbpImageMenu" )

                    // Als Parent habe ich Tabpage()
                    oxo := oXbp:setParent():Caption
                    // entsprechende o:oCrt "Fenster" schliessen
                    DO CASE
                       CASE oxo = "~Artikel"    ; oArtikel :oCrt:hide()
                       CASE oxo = "~Kunden"     ; oKunden  :oCrt:hide()
                       CASE oxo = "~Faktu"      ; oFaktu   :oCrt:hide()
                       CASE oxo = "U~msatz"     ; oUmsatz  :oCrt:hide()
                       CASE oxo = "K~reditoren" ; oKreditor:oCrt:hide()
                       CASE oxo = "Uti~ls"      ; oUtil    :oCrt:hide()
                       CASE oxo = "~Ende"       ; oEnde    :oCrt:hide()
                    ENDCASE
                    // wieder auf Tabpage setzen
                    setAppWindow( oXbp:setParent() )
                    // das wäre "doppelt gemoppelt" 
*                    setAppFocus( oXbp:setParent() )
                 ENDIF
              ENDIF
      OTHERWISE
         oXbp:handleEvent( nEvent, mp1, mp2 )
      ENDCASE
   ENDDO
gruss by OHR
Jimmy
Antworten