2010-06-25 16 views
13

Delphi 2010, Win32 VCL. Devo creare un menu principale per la mia applicazione con l'aspetto più standard. TMainMenu sembra bello in tutte le versioni di Windows, l'unica cosa negativa è quando visualizza immagini per elementi con Enabled = False.Immagini "disattivate" brutte di TMainMenu

Delphi ha un metodo strano per la creazione di immagini disattivate (estrusione in bianco e nero con smussi, per me sembra che spazzi). Voglio creare una patch per quella procedura nei sorgenti VCL e lasciare che il menu selezioni le immagini disabilitate dalla stessa TImageList, ma non riesco a trovarla.

Esiste o è una normale chiamata API di Windows? Sai dove si trova quella procedura?

Sure Lo stile OwnerDraw può risolvere tutto questo ma voglio una soluzione un po 'più veloce.

risposta

22

C'è un ottimo post su Galfar's Lair blog che descrive il problema e ha il codice per una soluzione alternativa, che sovrascrive il metodo DoDraw di TImageList.

Ecco l'immagine (collegata) che mostra "prima" e "dopo".

alt text

penso che questo si riferisce a praticamente tutte le versioni di Delphi.

+0

Ottimo! Sostituirò TCustomImageList.DoDraw e l'immagine disabilitata verrà copiata dalla seconda metà dell'immagine archiviata 32x16. Grazie Roddy e Galfar. – Andrew

+0

Brillante! Ho bisogno di questo! –

4

Se è possibile fornire le immagini come PNG, è possibile utilizzare TPngImageList da PngComponents. Ha diverse opzioni per creare un'immagine disabilitata mista o grossa. Il formato PNG ti consente di utilizzare alphablending.

Problemi correlati