Hallo Frank,
beim bBrowser würde ich eher die Methode MenuInit() verwenden:
METHOD MenuInit (oEvent) CLASS MyBrowserWindow
// Event verwalten
LOCAL oMenu AS Menu
LOCAL iCol AS INT
LOCAL sSpalte AS SYMBOL
LOCAL cField AS STRING
LOCAL lSuccess AS LOGIC
// Beim ersten Aufruf enthält oEvent:Message den Wert WM_INITMENU und signalisiert, dass ein Menü geöffnet wurde.
// Beim zweiten Aufruf enthält oEvent:Message den Wert WM_INITMENUPOPUP und signalisiert, dass es sich um ein
// PopUpMenu handelt. Wenn das Menu weitere Untermenüs enthält, dann wird für jedes angezeigte Untermenü noch einmal
// die CALLBACK-Methode MenuInit() aufgerufen. oEvent:Message enthält in diesem Fall dann den Wert WM_INITMENUPOPUP.
SUPER:MenuInit(oEvent)
IF oEvent:Message == WM_INITMENU
oMenu := oEvent:Menu
DO CASE
CASE oMenu == SELF:oDCbBrowser:GetContextMenu(BCM_CAPTION) // Caption-Menü des Browser
CASE oMenu == SELF:oDCbBrowser:GetContextMenu(BCM_DATA) // Data-Menü des Browser
// Beispiel für Enable/Disable
IF SELF:lUserEdit
oMenu:EnableItem(IDM_mnuBrowser_MenuBrowser_Markierte_Daten_löschen_ID)
ELSE
oMenu:DisableItem(IDM_mnuBrowser_MenuBrowser_Markierte_Daten_löschen_ID)
ENDIF
iCol := SELF:oDCbBrowser:CurrentColumn // Die aktuelle Spalte des bBrowser
IF Between(iCol, 1, SELF:oDCbBrowser:ColumnOpenCount)
sSpalte := SELF:oDCbBrowser:GetOpenColumn(iCol):HyperLabel:NameSym
// Die aktuelle Spalte ist bekannt - damit kann der Zeilen- bzw. Spalteninhalt für das Menü verwendet werden
// In dem Menü wird ja bekannt sein, welche Zeile - und damit welche ID - im Menü verändert werden soll.
// Dafür kann der ID-Eintrag verwendet werden - z.B. IDM_mnuBrowser_MenuBrowser_Autofilter_ID
MenuChangeItem (oMenu, IDM_mnuBrowser_MenuBrowser_Autofilter_ID, "Mein neuer Menütext")
ENDIF
lSuccess := TRUE
CASE oMenu == SELF:oDCbBrowser:GetContextMenu(BCM_FOOTER) // Footer-Menü des Browser
CASE oMenu == SELF:oDCbBrowser:GetContextMenu(BCM_SELECTOR) // Selector-Menü des Browser
ENDCASE
oMenu := NULL_OBJECT
ENDIF
RETURN lSuccess
FUNCTION MenuChangeItem (oMenu AS Menu, nID AS DWORD, cCaption AS STRING) AS LOGIC PASCAL
LOCAL mii IS _winMENUITEMINFO
LOCAL pNewText AS PTR
LOCAL lRet := FALSE AS LOGIC
IF nID > 0
pNewText := MemAlloc(256)
mii.cbSize := _SIZEOF(_winMENUITEMINFO)
mii.fMask := MIIM_TYPE
mii.fType := MFT_STRING
mii.cch := 256
mii.dwTypeData := pNewText
IF GetMenuItemInfo(oMenu:Handle(), nID, FALSE, @mii)
MemCopyString(pNewText, cCaption + _CHR(0), SLen(cCaption)+1)
mii.cch := SLen(cCaption) + 1
lRet := SetMenuItemInfo(oMenu:Handle(), nID, FALSE, @mii)
ENDIF
MemFree(pNewText)
ENDIF
RETURN lRet
HTH
Gerhard