Colorare la barra dei Menu

Da Gambas-it.org - Wikipedia.

Il colore della barra dei Menu di un'applicazione è determinato dal Tema/Desktop impostato, ma con uno stratagemma è possibile impostare un colore a nostro piacimento.

Va precisato che la soluzione, che descriveremo, funziona regolarmente se si usano i Componenti delle risorse di GTK; mentre, si usa la risorsa QT, alcuni stili delle impostazioni grafiche delle finestre impediscono il risultato desiderato.

Descrivendo la soluzione proposta [nota 1], va detto che la barra dei Menu assume il colore dello sfondo del Form. Pertanto, per mantenere il colore predefinito della restante parte della finestra, si porrà sul Form un Panel, in modo che compra l'intero Form e al quale sarà assegnato il valore Costante del colore ".Background". In tal modo il colore di fondo del Form, da noi scelto, sarà coperto dal colore predefinito ".Background" del Panel, restando invece colorata la barra dei Menu, dato che resta impossibile per il Panel coprire anche la barra dei Menu.

Mostriamo di seguito un esempio essenziale, al quale si dovrà aggiungere l'opportuno codice per creare i sotto-menu del Menu principale.

Private pn As Panel
Private MenuPrinc As Menu


Public Sub Form_Open()

 Dim bt As Button

 With MenuPrinc = New Menu(Me)
   .Text = "Menu 1"
 End With

' Determina l'espansione del "Panel" sull'intera superficie del "Form":
 Me.Arrangement = Arrange.Fill

' Imposta il colore che determinerà la colorazione anche della Barra dei Menu:
 Me.Background = Color.Yellow

 With pn = New Panel(Me)
   .Background = Color.Background
 End With

' Il "Button" - come ogni altro eventuale Controllo grafico da far apparire sul "Form" - va assegnato al "Panel", quale proprio Contenitore "Padre", e NON al "Form" principale, poiché in tal caso esso subirebbe l'effetto dell'espansione della sua dimensione per l'intera superficie del "Form" (come avviene per il "Panel"):
 With bt = New Button(pn) As "Button1"
   .X = 100
   .Y = 100
   .W = 50
   .H = 30
   .Text = "Tasto"
 End With
 
End


Note

[1] Questa soluzione è stata proposta dal membro del forum di gambas-it.org: Gianluigi.