Ownerdrawn menu

Ownerdrawn menusChange den ownerdraw eiendommen av TMainMenu til True, så for eachTMenuItem du vil tilpassede tegne rote med OnDrawItem andOnMeasureItem. Etter et eksempel fritt konvertert fra en MSDNsample: TForm1 = klasse (TForm) MainMenu1: TMainMenu; N1: TMenuItem; //File N2: TMenuItem; //File - > Regelmessig N3: TMenuItem; //File - > Fet N4: TMenuItem; //File - > Kursiv N5: TMenuItem; //File - > Understrek prosedyre N1DrawItem (Sender: TObject; ACanvas: TCanvas; ARect: TRect; Valgt: Boolean); Prosedyren N1MeasureItem (Sender: TObject; ACanvas: TCanvas; Var Bredde, Høyde: Integer); ... prosedyre TForm1.N1DrawItem (Sender: TObject; ACanvas: TCanvas; ARect: TRect; Valgt: Boolean); Var clrPrevText: TColor; clrPrevBkgnd: TColor; begynne tilfellet (Sender som TMenuItem) .MenuIndex på 1: ACanvas.Font.Style: = [fsBold]; 2: ACanvas.Font.Style: = [fsItalic]; 3: ACanvas.Font.Style: = [fsUnderline]; slutt; //Saving forgrunn og bakgrunnsfarger. clrPrevText: = ACanvas.Font.Color; clrPrevBkgnd: = ACanvas.Brush.Color; //Sett passende forgrunn og bakgrunnsfarger. Hvis dette er valgt deretter begynne ACanvas.Font.Color: = clHighlightText; ACanvas.Brush.Color: = clHighlight; ende annet begynne ACanvas.Font.Color: = clMenuText; ACanvas.Brush.Color: = clMenu; slutt; //Bestem hvor du skal tegne og la det være plass for en hake. ExtTextOut (ACanvas.Handle, ARect.Left + GetSystemMetrics (SM_CXMENUCHECK), ARect.Top + 1, ETO_OPAQUE,ARect, PChar ((Sender som TMenuItem) .Caption), Lengde ((Sender som TMenuItem) .Caption), nil); //Gjenopprett den opprinnelige skrift og farger. ACanvas.Font.Color: = clrPrevText; ACanvas.Brush.Color: = clrPrevBkgnd; ACanvas.Font.Style: = []; ende; prosedyre TForm1.N1MeasureItem (Sender: TObject; ACanvas: TCanvas; Var Bredde, Høyde: Integer); Var Størrelse: TSize; begynne GetTextExtentPoint32 (ACanvas.Handle, PChar ((Sender som TMenuItem) .Caption), Lengde ((Sender som TMenuItem) .Caption), Size); Bredde: = size.cx + 2 * GetSystemMetrics (SM_CXMENUCHECK); Høyde: = size.cy + 5; ende; Anmeldelser



Previous:
Next Page: