ownerdrawn menu

,, ownerdrawn menuer, ændre ownerdraw ejendom af tmainmenu sand, derefter for hver enkelt, tmenuitem du skik henlede rod med ondrawitem og, onmeasureitem.Following an example freely converted from a MSDN,, sample :,,, TForm1 = class(TForm),, MainMenu1: TMainMenu;,, N1: TMenuItem; //File,, N2: TMenuItem; //File -> Regular,, N3: TMenuItem; //File -> Bold,, N4: TMenuItem; //File -> Italic,, N5: TMenuItem; //File -> Underline,, procedure N1DrawItem(Sender: TObject; ACanvas: TCanvas;,, ARect: TRect; Selected: Boolean);,, procedure N1MeasureItem(Sender: TObject; ACanvas: TCanvas;,, var Width, Height: Integer);,,, ...,,, procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;,, ARect: TRect; Selected: Boolean);,, var,, clrPrevText: TColor;,, clrPrevBkgnd: TColor;,, begin,, case (Sender as TMenuItem).MenuIndex of,, 1: ACanvas.Font.Style :=[fsbold], 2: acanvas.font.style: = [fsitalic], 3: acanvas.font.style: = [fsunderline],,,,,, //redde forgrunds - og baggrundsviden farver.,, clrprevtext: = acanvas. skrifttype. farve;,, clrprevbkgnd: = acanvas. børste. farve,,, //fastsætte passende forgrunds - og baggrundsviden farver.,, hvis valgt, så begynder, acanvas.font.color: = clhighlighttext;,, acanvas.brush.color: = clhighlight,,,,,,, begynder, acanvas.font.color: = clmenutext;,, acanvas.brush.color: = clmenu,,,,,, ////////bestemme, hvor at trække og forlade rummet til et flueben.,, exttextout (acanvas.handle, arect. venstre +, getsystemmetrics (sm_cxmenucheck), arect. top + 1,,, eto_opaque, @ endirekte, pchar (afsender som tmenuitem). teksten), længde ((afsender som tmenuitem). teksten), nul), //genoprette den oprindelige skrifttype og farver,.,, acanvas.font.color: = clrprevtext;,, acanvas.brush.color: = clrprevbkgnd;,, acanvas.font.style: = [...],,,.,,, procedure tform1. n1measureitem (afsender: tobject; acanvas: tcanvas;,, var bredde, højde: heltal);,, var,, størrelse: tsize;,, begynder, gettextextentpoint32 (acanvas. klare,,, pchar (afsender som tmenuitem). teksten), længde ((afsender som tmenuitem). teksten), størrelse), bredde: = size.cx + 2 * getsystemmetrics (sm_cxmenucheck);,, højde: = size.cy + 5,,,,,,



Previous:
Next Page: