Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project ODMENU
Project StructureODMENU.DPRprogram ODMenu; uses Forms, BitMenuF in 'BitMenuF.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. BITMENUF.PASunit BitMenuF; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus; type TForm1 = class(TForm) ShapeDemo: TShape; MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Shape1: TMenuItem; Ellipse1: TMenuItem; RoundRec1: TMenuItem; Rectang1: TMenuItem; Color1: TMenuItem; Red1: TMenuItem; Green1: TMenuItem; Blue1: TMenuItem; Help1: TMenuItem; About1: TMenuItem; procedure FormResize(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure ColorClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Ellipse1Click(Sender: TObject); procedure RoundRec1Click(Sender: TObject); procedure Rectang1Click(Sender: TObject); procedure ColorMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); procedure ColorDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); procedure ShapeMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); procedure Ellipse1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); procedure RoundRec1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); procedure Rectang1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); private { Private declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormResize(Sender: TObject); begin ShapeDemo.SetBounds (ClientWidth div 6, ClientHeight div 6, 2 * ClientWidth div 3, 2 * ClientHeight div 3); end; procedure TForm1.Exit1Click(Sender: TObject); begin Close; end; procedure TForm1.About1Click(Sender: TObject); begin MessageDlg ('Owner-draw menu example,'#13 + 'from "Mastering Delphi" by Marco Cant�', mtInformation, [mbOK], 0); end; procedure TForm1.ColorClick(Sender: TObject); begin ShapeDemo.Brush.Color := (Sender as TComponent).Tag end; procedure TForm1.FormCreate(Sender: TObject); begin Blue1.Tag := clBlue; Red1.Tag := clRed; Green1.Tag := clGreen; end; procedure TForm1.Ellipse1Click(Sender: TObject); begin ShapeDemo.Shape := stEllipse; end; procedure TForm1.RoundRec1Click(Sender: TObject); begin ShapeDemo.Shape := stRoundRect; end; procedure TForm1.Rectang1Click(Sender: TObject); begin ShapeDemo.Shape := stRectangle; end; procedure TForm1.ColorMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); begin Width := 80; Height := 30; end; procedure TForm1.ColorDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin // set the background color and draw it if Selected then ACanvas.Brush.Color := clHighlight else ACanvas.Brush.Color := clMenu; ACanvas.FillRect (ARect); // show the color ACanvas.Brush.Color := (Sender as TComponent).Tag; InflateRect (ARect, -5, -5); ACanvas.Rectangle (ARect.Left, ARect.Top, ARect.Right, ARect.Bottom); end; procedure TForm1.ShapeMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); begin Width := 90; Height := 40; end; procedure TForm1.Ellipse1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin // set the background color and draw it if Selected then ACanvas.Brush.Color := clHighlight else ACanvas.Brush.Color := clMenu; ACanvas.FillRect (ARect); // draw the ellipse ACanvas.Brush.Color := clWhite; InflateRect (ARect, -5, -5); ACanvas.Ellipse (ARect.Left, ARect.Top, ARect.Right, ARect.Bottom); end; procedure TForm1.RoundRec1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin // set the background color and draw it if Selected then ACanvas.Brush.Color := clHighlight else ACanvas.Brush.Color := clMenu; ACanvas.FillRect (ARect); // draw the round rectangle ACanvas.Brush.Color := clWhite; InflateRect (ARect, -5, -5); ACanvas.RoundRect (ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, 5, 5); end; procedure TForm1.Rectang1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin // set the background color and draw it if Selected then ACanvas.Brush.Color := clHighlight else ACanvas.Brush.Color := clMenu; ACanvas.FillRect (ARect); // draw the rectangle ACanvas.Brush.Color := clWhite; InflateRect (ARect, -5, -5); ACanvas.Rectangle (ARect.Left, ARect.Top, ARect.Right, ARect.Bottom); end; end. BITMENUF.DFMobject Form1: TForm1 Left = 244 Top = 111 Width = 425 Height = 298 Caption = 'ODMenu' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] Menu = MainMenu1 OldCreateOrder = True OnCreate = FormCreate OnResize = FormResize PixelsPerInch = 96 TextHeight = 13 object ShapeDemo: TShape Left = 120 Top = 72 Width = 145 Height = 81 Shape = stEllipse end object MainMenu1: TMainMenu OwnerDraw = True Left = 56 Top = 16 object File1: TMenuItem Caption = '&File' object Exit1: TMenuItem Caption = 'E&xit' OnClick = Exit1Click end end object Shape1: TMenuItem Caption = '&Shape' object Ellipse1: TMenuItem Caption = 'Ellipse' OnClick = Ellipse1Click OnDrawItem = Ellipse1DrawItem OnMeasureItem = ShapeMeasureItem end object RoundRec1: TMenuItem Caption = 'RoundRec' OnClick = RoundRec1Click OnDrawItem = RoundRec1DrawItem OnMeasureItem = ShapeMeasureItem end object Rectang1: TMenuItem Caption = 'Rectang' OnClick = Rectang1Click OnDrawItem = Rectang1DrawItem OnMeasureItem = ShapeMeasureItem end end object Color1: TMenuItem Caption = '&Color' object Red1: TMenuItem Caption = 'Red' OnClick = ColorClick OnDrawItem = ColorDrawItem OnMeasureItem = ColorMeasureItem end object Green1: TMenuItem Caption = 'Green' OnClick = ColorClick OnDrawItem = ColorDrawItem OnMeasureItem = ColorMeasureItem end object Blue1: TMenuItem Caption = 'Blue' OnClick = ColorClick OnDrawItem = ColorDrawItem OnMeasureItem = ColorMeasureItem end end object Help1: TMenuItem Caption = '&Help' object About1: TMenuItem Caption = '&About...' OnClick = About1Click end end end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |