xsharp.eu • Modifica della proprietà CAPTION di una voce di menù.
Page 1 of 1

Modifica della proprietà CAPTION di una voce di menù.

Posted: Fri Jan 20, 2023 12:34 am
by veliero
Salve a tutti,
stavo smanettando con i menù, in particolare con l'EmptyShellMenu sotto l'applicazione Standard VO MDI generata in ambiente XIDE.
Mi chiedevo se fosse possibile modificare la CAPTION di una certa voce di menù dopo che lo stesso è stato associato alla StandardShellWindow nel metodo INIT:

METHOD Init( oOwnerApp ) CLASS StandardShellWindow

LOCAL oSB AS StatusBar

SUPER:Init( oOwnerApp )

SetDeleted(TRUE)

oSB := SELF:EnableStatusBar()
oSB:DisplayTime()

SELF:Menu := EmptyShellMenu{SELF} <===========

mi occorre fare ciò poiché in un'applicazione sotto VO che sto provando a replicare sotto X# vorrei modificare la CAPTION di una voce di menù se l'utente compie una determinata azione nel mio programma.
Ho esaminato la CLASSE MENU ma trovo solo metodi per vedere le diverse proprietà (GET) ma non per poterle impostare (SET); in particolare per la CAPTION che vorrei modificare.
Spero di essere stato chiaro. Qualcuno può aiutarmi?

Saluti
Francesco

Modifica della proprietà CAPTION di una voce di menù.

Posted: Fri Jan 20, 2023 5:07 am
by wriedmann
Ciao Francesco,
in questi casi cambio l'intero menu della finestra.
Dovrebbe essere possibile con un po di Windows API:
https://stackoverflow.com/questions/249 ... -item-text
Saluti
Wolfgang

Modifica della proprietà CAPTION di una voce di menù.

Posted: Fri Jan 20, 2023 10:28 am
by g.bunzel@domonet.de
Ciao Francesco,

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

Saluti
Gerhard

Modifica della proprietà CAPTION di una voce di menù.

Posted: Sat Jan 21, 2023 12:02 am
by veliero
Grande Gherard,
la funzione è perfetta e lavora molto bene :)

Saluti
Francesco