Advertisement
jpfassis

MyItemMenu Delphi

Jun 25th, 2019
508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.49 KB | None | 0 0
  1. unit UnitMyItemMenu;
  2.  
  3. interface
  4.  
  5. uses
  6. SysUtils, Classes, Graphics, Buttons, StdCtrls, ExtCtrls, Controls,
  7.  Types,Messages, Dialogs;
  8.  
  9. type
  10.  
  11. TShapeEnum = (pLeft, pBottom);
  12.  
  13. TMyItemMenu = class(TCustomControl)
  14.   private
  15.     Panel_Fundo : TPanel;
  16.     Shape_Lateral : TShape;
  17.     Image_Menu_Item : TImage;
  18.     Label_Menu_Item : TLabel;
  19.     FShapeWidth : Integer;
  20.     FShapeHeight : Integer;
  21.     FShapeColor : TColor;
  22.     FShapePosicion : TShapeEnum;
  23.     FPanelColor : TColor;
  24.     FPanelOverColor : TColor;
  25.     FPanelColorSelected : TColor;
  26.     FPanelSelected : Boolean;
  27.     FTextMenu : String;
  28.     FTextMenuFont : TFont;
  29.     FImagem : TPicture;
  30.     FImagemWidth : Integer;
  31.     FOnMouseEnter : TNotifyEvent;
  32.     FOnClick: TNotifyEvent;
  33.     procedure configuracao;
  34.     procedure SetTextMenu(const Value: string);
  35.     procedure SetImagem(const Value: TPicture);
  36.     procedure SetPanelColor(const Value: TColor);
  37.     procedure SetPanelOverColor(const Value: TColor);
  38.     procedure SetShapeColor(const Value: TColor);
  39.     procedure SetShapeWidth(const Value: Integer);
  40.     procedure SetTextMenuFont(const Value: TFont);
  41.     procedure Paint; override;
  42.     procedure SetPanelColorOver(const Value: TColor);
  43.     procedure SetImagemWidth(const Value: Integer);
  44.     procedure SetPicture(const Value: TPicture);
  45.     procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  46.     procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  47.     procedure MouseEnterColor;
  48.     procedure MouseMouseLeave;
  49.     procedure SetShapePosicion(const Value: TShapeEnum);
  50.     procedure SetShapeHeight(const Value: Integer);
  51.     procedure SetPanelColorSelected(const Value: TColor);
  52.     procedure SetPanelSelected(const Value: Boolean);
  53.     procedure SetOnClick(const Value: TNotifyEvent);
  54.     procedure Click(Sender: TObject);
  55.   protected
  56.     procedure CreateWnd; override;
  57.   public
  58.     constructor Create(aOwner : TComponent); override;
  59.     destructor Destroy; override;
  60.     procedure LoadFromFile(const Filename: string);
  61.   published
  62.     property ShapeWidth : Integer read FShapeWidth write SetShapeWidth;
  63.     property ShapeHeight : Integer read FShapeHeight write SetShapeHeight;
  64.     property ShapeColor : TColor read FShapeColor write SetShapeColor;
  65.     property ShapePosicion : TShapeEnum read FShapePosicion write SetShapePosicion;
  66.     property PanelColor : TColor read FPanelColor write SetPanelColor;
  67.     property PanelColorOver : TColor read FPanelOverColor write SetPanelColorOver;
  68.     property PanelColorSelected : TColor read FPanelColorSelected write SetPanelColorSelected;
  69.     property PanelSelected : Boolean read FPanelSelected write SetPanelSelected;
  70.     property TextMenuFont : TFont read FTextMenuFont write SetTextMenuFont;
  71.     property Imagem : TPicture read FImagem write SetImagem;
  72.     property ImagemWidth : Integer read FImagemWidth write SetImagemWidth;
  73.     property Picture: TPicture read FImagem write SetPicture;
  74.     property TextMenu : string read FTextMenu write SetTextMenu;
  75.  
  76.     property OnClick : TNotifyEvent read FOnClick write SetOnClick; //evento definido no object inspector
  77. end;
  78.  
  79. procedure register;
  80.  
  81. implementation
  82.  
  83. procedure register;
  84. begin
  85.   registercomponents('My Componentes', [TMyItemMenu]);
  86. end;
  87.  
  88. constructor TMyItemMenu.Create(aOwner : TComponent);
  89. begin
  90.   inherited Create(aOwner);
  91.   self.Width:=200;
  92.   self.Height:=40;
  93.   self.ParentColor:=True;
  94.   FPanelColor := self.Color;
  95.   FPanelOverColor:=self.Color;
  96.  
  97.   Panel_Fundo := TPanel.Create(self);
  98.   Panel_Fundo.Parent:= self;
  99.   Panel_Fundo.ParentColor:= True;
  100.   //Panel_Fundo.Color:=FPanelColor;
  101.  
  102.   Shape_Lateral := TShape.Create(Panel_Fundo);
  103.   Shape_Lateral.Parent:= Panel_Fundo.Parent;
  104.   Shape_Lateral.Align:=alLeft;
  105.   FShapeWidth :=3; //valor definido como defaul
  106.   FShapeHeight:=3;
  107.  
  108.   FImagem := TPicture.Create;
  109.   Image_Menu_item := TImage.Create(Panel_Fundo);
  110.   Image_Menu_item.parent:= Panel_Fundo.Parent;
  111.  
  112.   FTextMenuFont := TFont.Create;
  113.   Label_Menu_Item := TLabel.Create(Panel_Fundo);
  114.   Label_Menu_Item.parent:= Panel_Fundo.Parent;
  115.   Label_Menu_Item.Font:= FTextMenuFont;
  116.  
  117.   configuracao;
  118. end;
  119.  
  120. procedure TMyItemMenu.CreateWnd;
  121. begin
  122.   inherited;
  123.     FPanelColor := self.Color;
  124.  
  125.     Image_Menu_item.Picture:=FImagem;
  126.     Label_Menu_Item.Font:=FTextMenuFont;
  127.  
  128.     //Label_Menu_Item.Transparent:=True;
  129.     Label_Menu_Item.Font:=FTextMenuFont;
  130.     Label_Menu_Item.Color:=FPanelColor;
  131.     //
  132.     Panel_Fundo.OnClick:=self.OnClick;
  133.     Label_Menu_Item.OnClick:=self.OnClick;
  134.     Image_Menu_item.OnClick:=self.OnClick;
  135.     //OnMouseEnter
  136.     Panel_Fundo.OnMouseEnter:=self.OnMouseEnter;
  137.     Label_Menu_Item.OnMouseEnter:=self.OnMouseEnter;
  138.     Image_Menu_item.OnMouseEnter:=self.OnMouseEnter;
  139.     //OnMouseLeave
  140.     Panel_Fundo.OnMouseLeave:=self.OnMouseLeave;
  141.     Label_Menu_Item.OnMouseLeave:=self.OnMouseLeave;
  142.     Image_Menu_item.OnMouseLeave:=self.OnMouseLeave;
  143.  
  144. end;
  145.  
  146. destructor TMyItemMenu.Destroy;
  147. begin
  148.   inherited;
  149. end;
  150.  
  151. procedure TMyItemMenu.LoadFromFile(const Filename: string);
  152. begin
  153.   Image_Menu_item.Picture.LoadFromFile(Filename);
  154.   Image_Menu_item.Refresh;
  155. end;
  156.  
  157. procedure TMyItemMenu.MouseEnterColor;
  158. begin
  159.  
  160. end;
  161.  
  162. procedure TMyItemMenu.MouseMouseLeave;
  163. begin
  164.  
  165. end;
  166.  
  167. procedure TMyItemMenu.Paint;
  168. begin
  169.  
  170.   with Canvas do
  171.   begin
  172.    ///usar aqui para desenhar algo novo no componente
  173.   end;
  174.  
  175. end;
  176.  
  177. procedure TMyItemMenu.SetImagem(const Value: TPicture);
  178. begin
  179.   FImagem.Assign(Value);
  180.   Image_Menu_item.Picture:=FImagem;
  181.   Image_Menu_item.Refresh;
  182. end;
  183.  
  184. procedure TMyItemMenu.SetImagemWidth(const Value: Integer);
  185. begin
  186.   FImagemWidth := Value;
  187.   Image_Menu_item.Width:=FImagemWidth;
  188. end;
  189.  
  190. procedure TMyItemMenu.SetOnClick(const Value: TNotifyEvent);
  191. begin
  192.   FOnClick := Value;
  193.   Self.OnClick:= Click;
  194. end;
  195.  
  196. procedure TMyItemMenu.SetPanelColor(const Value: TColor);
  197. begin
  198.  
  199.   FPanelColor := Value;
  200.   self.ParentColor:=False;
  201.   self.Color:=FPanelColor;
  202.  
  203.   Label_Menu_Item.Transparent:=False;
  204.   Panel_Fundo.Color:=FPanelColor;
  205.   Label_Menu_Item.Color:=FPanelColor;
  206.  
  207. end;
  208.  
  209. procedure TMyItemMenu.SetPanelColorOver(const Value: TColor);
  210. begin
  211.   FPanelOverColor := Value;
  212. end;
  213.  
  214. procedure TMyItemMenu.SetPanelColorSelected(const Value: TColor);
  215. begin
  216.   FPanelColorSelected := Value;
  217. end;
  218.  
  219. procedure TMyItemMenu.SetPanelOverColor(const Value: TColor);
  220. begin
  221.   FPanelOverColor := Value;
  222. end;
  223.  
  224. procedure TMyItemMenu.SetPanelSelected(const Value: Boolean);
  225. begin
  226.   FPanelSelected := Value;
  227. end;
  228.  
  229. procedure TMyItemMenu.SetPicture(const Value: TPicture);
  230. begin
  231.   FImagem.Assign(Value);
  232.   Image_Menu_item.Picture:=FImagem;
  233.   Image_Menu_item.Refresh;
  234. end;
  235.  
  236. procedure TMyItemMenu.SetShapeColor(const Value: TColor);
  237. begin
  238.   FShapeColor := Value;
  239.   Shape_Lateral.Brush.Color:=FShapeColor;
  240.   Shape_Lateral.Pen.Color:=FShapeColor;
  241. end;
  242.  
  243. procedure TMyItemMenu.SetShapeHeight(const Value: Integer);
  244. begin
  245.   FShapeHeight := Value;
  246.   Shape_Lateral.Height:=FShapeHeight;
  247. end;
  248.  
  249. procedure TMyItemMenu.SetShapePosicion(const Value: TShapeEnum);
  250. begin
  251.   FShapePosicion := Value;
  252.  
  253.   case Value of
  254.    pLeft:
  255.    begin
  256.     Shape_Lateral.Align:=alLeft;
  257.     Shape_Lateral.Height:=0;
  258.    end;
  259.    pBottom:
  260.    begin
  261.     Shape_Lateral.Align:=alBottom;
  262.     Shape_Lateral.Height:=FShapeHeight;
  263.    end;
  264.   end;
  265.  
  266.  
  267.  
  268. end;
  269.  
  270. procedure TMyItemMenu.SetShapeWidth(const Value: Integer);
  271. begin
  272.   FShapeWidth := Value;
  273.   Shape_Lateral.Width:=FShapeWidth;
  274. end;
  275.  
  276. procedure TMyItemMenu.SetTextMenu(const Value: string);
  277. begin
  278.   FTextMenu := Value;
  279.   Label_Menu_Item.Caption:=FTextMenu;
  280. end;
  281.  
  282. procedure TMyItemMenu.SetTextMenuFont(const Value: TFont);
  283. begin
  284.   FTextMenuFont.Assign(Value);
  285.   Label_Menu_Item.Font:=FTextMenuFont;
  286. end;
  287.  
  288. procedure TMyItemMenu.Click(Sender: TObject);
  289. begin
  290.   FPanelSelected:=True;
  291.  
  292.  
  293.   self.ParentColor:=False;
  294.   self.Color:=FPanelColorSelected;
  295.  
  296.   Label_Menu_Item.Transparent:=False;
  297.   Panel_Fundo.Color:=FPanelColorSelected;
  298.   Label_Menu_Item.Color:=FPanelColorSelected;
  299.  
  300. end;
  301.  
  302. procedure TMyItemMenu.CMMouseEnter(var Message: TMessage);
  303. begin
  304.   inherited;
  305.   Shape_Lateral.Brush.Color:=FShapeColor;
  306.   Shape_Lateral.Pen.Color:=FShapeColor;
  307.   Self.Color:= FPanelOverColor;
  308. end;
  309.  
  310. procedure TMyItemMenu.CMMouseLeave(var Message: TMessage);
  311. begin
  312.   inherited;
  313.   Shape_Lateral.Brush.Color:=FPanelColor;
  314.   Shape_Lateral.Pen.Color:=FPanelColor;
  315.   Self.Color:= FPanelColor;
  316. end;
  317.  
  318. procedure TMyItemMenu.configuracao;
  319. begin
  320.   Panel_Fundo.Align:=alClient;
  321.   Panel_Fundo.BevelOuter:=bvNone;
  322.   Panel_Fundo.ParentColor:=True;
  323.   ////
  324.   FShapeColor := clRed;
  325.   Shape_Lateral.width:=8;
  326.   Shape_Lateral.Align:=alLeft;
  327.   Shape_Lateral.Brush.Color:=FShapeColor;
  328.   Shape_Lateral.Pen.Style:=psSolid;
  329.   Shape_Lateral.Pen.Color:=FShapeColor;
  330.   Shape_Lateral.Width:=FShapeWidth;
  331.   ////
  332.   FImagemWidth:=38;
  333.   Image_Menu_item.width:=FImagemWidth;
  334.   Image_Menu_item.Align:=alLeft;
  335.   Image_Menu_item.Stretch:=True;
  336.   ////
  337.   FTextMenu:='Teste de Texto';
  338.   FTextMenuFont.Name:='Segoe UI';
  339.   FTextMenuFont.Size:=11;
  340.   Label_Menu_Item.width:=100;
  341.   Label_Menu_Item.Align:=alLeft;
  342.   Label_Menu_Item.Caption:=FTextMenu;
  343.   Label_Menu_Item.Layout:=tlCenter;
  344.   Label_Menu_Item.Font.Size:=FTextMenuFont.Size;
  345.   Label_Menu_Item.Font.Name:=FTextMenuFont.Name;
  346.   Label_Menu_Item.ParentColor:=True;
  347.   Label_Menu_Item.Transparent:=True;
  348.   Label_Menu_Item.Color:=FPanelColor;
  349. end;
  350.  
  351. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement