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

Forum dedicato ai programmatori di X# in lingua italiana – Italian language forum

Moderator: wriedmann

Post Reply
veliero
Posts: 22
Joined: Sun Feb 25, 2018 11:28 pm

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

Post 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
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

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

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
g.bunzel@domonet.de
Posts: 97
Joined: Tue Mar 01, 2016 11:50 am
Location: Germany

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

Post 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
veliero
Posts: 22
Joined: Sun Feb 25, 2018 11:28 pm

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

Post by veliero »

Grande Gherard,
la funzione è perfetta e lavora molto bene :)

Saluti
Francesco
Post Reply