PopUp Menü an falsche Position?

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

PopUp Menü an falsche Position?

Beitrag von satmax »

Hallo,

ich erstelle ein PopupMenu und rufe es wie folgt auf:

Code: Alles auswählen

oMenu := XbpMenu():new(  ):create()
oMenu:AddItem( { "~Neustart", { || manuelStart(oWatchPrgBrows:rowPos)       } } )
...
nEvent := AppEvent(@mp1,@mp2,@oXbp,pub_oIniSetting:nTimerEvent)
DO CASE
  CASE nEvent == xbeM_RbClick
    oMenu:popup(oWatchPrgBrows, mp1 )
Das Menu erscheint in der richten Zeile, aber viel zu weit links? Der Wert mp1[2] ist also immer viel zu klein.
Gruß
Markus
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

Re: PopUp Menü an falsche Position?

Beitrag von AUGE_OHR »

satmax hat geschrieben:

Code: Alles auswählen

  CASE nEvent == xbeM_RbClick
    oMenu:popup(oWatchPrgBrows, mp1 )
Das Menu erscheint in der richten Zeile, aber viel zu weit links? Der Wert mp1[2] ist also immer viel zu klein.
mp1 besteht ja aus {X,Y} also meinst du mp1[1] ...

Frage : warum benutzt du xbeM_RbClick statt den 4th Parameter <nControl> ?

Code: Alles auswählen

:popUp( [<oXbp>], <aPos>, [<nPreselected>], [<nControl>] ) --> lSuccess 
XBPMENU_PU_MOUSE_LB *) Menü reagiert auf die linke Maustaste
XBPMENU_PU_MOUSE_RB *) Menü reagiert auf die rechte Maustaste
ich "denke" das ein xbeM_RbClick die "relative" Position zum Parent angibt ?
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: PopUp Menü an falsche Position?

Beitrag von satmax »

Frage : warum benutzt du xbeM_RbClick statt den 4th Parameter <nControl> ?
Sorry, das check ich nicht. 4 Parameter ok, aber wo definiere ich dann den Inhalt des Menüs und wo/wie sage ich meinem Browser das dieses Menü für ihn ist?

Menu erstellen mit:
oMenu := XbpMenu():new( ):create()
oMenu:AddItem( { "~Neustart", { || manuelStart(oWatchPrgBrows:rowPos) } } )
Aber hier weiß ich nicht weiter, wie ordne ich das meinem Browser zu: #-o

Code: Alles auswählen

oMenu:popup(oWatchPrgBrows, mp1,,XBPMENU_PU_MOUSE_RB )
Gruß
Markus
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

Re: PopUp Menü an falsche Position?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Aber hier weiß ich nicht weiter, wie ordne ich das meinem Browser zu: #-o

Code: Alles auswählen

oMenu:popup(oWatchPrgBrows, mp1,,XBPMENU_PU_MOUSE_RB )
versuche mal das

Code: Alles auswählen

oBrowse:itemRbDown := {| aMousePos, aRowCol, oSelf | oMenu:popup(oSelf    ,;
                                                                 aMousePos,;
                                                                          ,;
                                                                 XBPMENU_PU_DEFAULT+XBPMENU_PU_MOUSE_RB ) }
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: PopUp Menü an falsche Position?

Beitrag von satmax »

Danke Jimmy!

Hab's jetzt mit Deiner Hilfe so gelöst:

Code: Alles auswählen

// Create context menu
oMenu := ContextMenu( oWatchPrgBrows )
oWatchPrgBrows:ItemRbDown  := {|aPos,nRow,obj| oMenu:popUp( obj, aPos ) }
...
FUNCTION ContextMenu( oBrowse )
   LOCAL oMenu := XbpMenu( oBrowse ):new():create()

   oMenu:AddItem( { "~Neustart des Programmes",   { || manuelStart(oWatchPrgBrows:rowPos)       } } ) 
   oMenu:AddItem( { "~Konfiguration neu einlesen (inkl. Neustart)", { ||  ReReadIniFile()       } } ) 
   oMenu:AddItem( { "~Watchdog für 60 Minuten pausieren", { ||  WatchDogPause(60)       } } ) 


RETURN oMenu
Mein größtes Problem ist immer noch das finden in der Doku bzw. die fehlenden Beispiele... Aber dafür gibt es ja dieses spitzen Forum. :) Danke nochmals.
Gruß
Markus
Antworten