MMBPMPrp.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:7k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit MMBPMPrp;
  2. {$I COMPILER.INC}
  3. interface
  4. uses
  5. {$IFDEF DELPHI6}
  6.     DesignIntf,
  7.     DesignEditors,
  8. {$ELSE}
  9.     DsgnIntf,
  10. {$ENDIF}
  11.     Windows,
  12.     SysUtils,
  13.     Classes,
  14.     Controls,
  15.     Graphics,
  16.     TypInfo,
  17.     MMIdxPrp,
  18.     MMTrnPrp,
  19.     MMBMPLst,
  20.     MMBMPDlg,
  21.     MMFill,
  22.     MMCtrl,
  23.     MMBMPLED;
  24. type
  25.     {-- TMMBitmapBackIndexProperty --------------------------------------------}
  26.     TMMBitmapBackIndexProperty = class(TIntegerProperty)
  27.     public
  28.        procedure Edit; override;
  29.        function  GetAttributes: TPropertyAttributes; override;
  30.     end;
  31.     {-- TMMBitmapListComponentEditor --------------------------------------------}
  32.     TMMBitmapListComponentEditor = class(TComponentEditor)
  33.     public
  34.        procedure ExecuteVerb(Index: Integer); override;
  35.        function  GetVerb(Index: Integer): string; override;
  36.        function  GetVerbCount: Integer; override;
  37.     end;
  38.     {-- TMMBitmapListIndexComponentEditor ---------------------------------------}
  39.     TMMBitmapListIndexComponentEditor = class(TComponentEditor)
  40.     public
  41.        procedure ExecuteVerb(Index: Integer); override;
  42.        function  GetVerb(Index: Integer): string; override;
  43.        function  GetVerbCount: Integer; override;
  44.     end;
  45.     {-- TMMBitmapThumbIndexProperty ---------------------------------------------}
  46.     TMMBitmapThumbIndexProperty = class(TIntegerProperty)
  47.     public
  48.        procedure Edit; override;
  49.        function  GetAttributes: TPropertyAttributes; override;
  50.     end;
  51.     {-- TMMBitmapLEDDigitConnectEditor ----------------------------------------}
  52.     TMMBitmapLEDDigitConnectEditor = class(TComponentProperty)
  53.     public
  54.       procedure GetValues(Proc: TGetStrProc); override;
  55.     end;
  56. implementation
  57. {== TMMBitmapBackIndexProperty ================================================}
  58. procedure TMMBitmapBackIndexProperty.Edit;
  59. var
  60.    Idx: integer;
  61.    List: TMMBitmapList;
  62.    Comp: TComponent;
  63. begin
  64.    Comp := (GetComponent(0) as TComponent);
  65.    Idx  := (Comp as TMMCustomBitmapListcontrol).BitmapBackIndex;
  66.    List := (Comp as TMMCustomBitmapListcontrol).BitmapList;
  67.    if ExecuteBitmapIndexEditor(List,Idx) then
  68.       SetOrdValue(Idx);
  69. end;
  70. {-- TMMBitmapBackIndexProperty ------------------------------------------------}
  71. function TMMBitmapBackIndexProperty.GetAttributes: TPropertyAttributes;
  72. begin
  73.    Result := [paMultiSelect, paDialog, paRevertable];
  74. end;
  75. {== TMMBitmapListComponentEditor ==============================================}
  76. procedure TMMBitmapListComponentEditor.ExecuteVerb(Index: Integer);
  77. begin
  78.    with TMMBitmapListEditor.Create(nil) do
  79.    try
  80.       BitmapList := (Component as TMMBitmapList);
  81.       if (ShowModal = mrOK) and (Self.Designer <> nil) then Self.Designer.Modified;
  82.    finally
  83.       Free;
  84.    end;
  85. end;
  86. {-- TMMBitmapListComponentEditor ----------------------------------------------}
  87. function TMMBitmapListComponentEditor.GetVerb(Index: Integer): string;
  88. begin
  89.    Result := 'BitmapList-Editor...';
  90. end;
  91. {-- TMMBitmapListComponentEditor ----------------------------------------------}
  92. function TMMBitmapListComponentEditor.GetVerbCount: Integer;
  93. begin
  94.    Result := 1;
  95. end;
  96. {== TMMBitmapListIndexComponentEditor =========================================}
  97. procedure TMMBitmapListIndexComponentEditor.ExecuteVerb(Index: Integer);
  98. var
  99.    Clr: TColor;
  100.    Idx: integer;
  101.    List: TMMBitmapList;
  102. begin
  103.    case Index of
  104.        0: begin
  105.              if (Component is TMMCustomBitmapListControl) then
  106.              begin
  107.                 Idx  := (Component as TMMCustomBitmapListControl).BitmapIndex;
  108.                 List := (Component as TMMCustomBitmapListControl).BitmapList;
  109.              end
  110.              else if (Component is TMMFormFill) then
  111.              begin
  112.                 Idx  := (Component as TMMFormFill).BitmapIndex;
  113.                 List := (Component as TMMFormFill).BitmapList;
  114.              end
  115.              else if (Component is TMMPanelFill) then
  116.              begin
  117.                 Idx  := (Component as TMMPanelFill).BitmapIndex;
  118.                 List := (Component as TMMPanelFill).BitmapList;
  119.              end
  120.              else exit;
  121.              if ExecuteBitmapIndexEditor(List,Idx) then
  122.              begin
  123.                 if (Component is TMMCustomBitmapListControl) then
  124.                 begin
  125.                    (Component as TMMCustomBitmapListControl).BitmapIndex := Idx;
  126.                 end
  127.                 else if (Component is TMMFormFill) then
  128.                 begin
  129.                    (Component as TMMFormFill).BitmapIndex := Idx;
  130.                 end
  131.                 else if (Component is TMMPanelFill) then
  132.                 begin
  133.                    (Component as TMMPanelFill).BitmapIndex := Idx;
  134.                 end
  135.                 else exit;
  136.                 if (Self.Designer <> nil) then Self.Designer.Modified;
  137.              end;
  138.           end;
  139.        1: if ExecuteTransColorEditor(TMMCustomBitmapListControl(Component),Clr) then
  140.           begin
  141.              TMMCustomBitmapListControl(Component).TransparentColor := Clr;
  142.              if (Self.Designer <> nil) then Self.Designer.Modified;
  143.           end;
  144.    end;
  145. end;
  146. {-- TMMBitmapListIndexComponentEditor -----------------------------------------}
  147. function TMMBitmapListIndexComponentEditor.GetVerb(Index: Integer): string;
  148. begin
  149.    case index of
  150.        0: Result := 'BitmapIndex-Editor...';
  151.        1: Result := 'Transparent-Editor...';
  152.    end;
  153. end;
  154. {-- TMMBitmapListIndexComponentEditor -----------------------------------------}
  155. function TMMBitmapListIndexComponentEditor.GetVerbCount: Integer;
  156. begin
  157.    Result := 1;
  158.    if (Component is TMMCustomBitmapListControl) and
  159.       (GetPropInfo(Component.ClassInfo, 'TransparentColor') <> nil) then
  160.         Result := 2;
  161. end;
  162. {== TMMBitmapThumbIndexProperty ===============================================}
  163. procedure TMMBitmapThumbIndexProperty.Edit;
  164. var
  165.    Idx: integer;
  166.    List: TMMBitmapList;
  167.    Comp: TComponent;
  168. begin
  169.    Comp := (GetComponent(0) as TComponent);
  170.    Idx  := (Comp as TMMBitmapSlider).BitmapThumbIndex;
  171.    List := (Comp as TMMBitmapSlider).BitmapList;
  172.    if ExecuteBitmapIndexEditor(List,Idx) then
  173.       SetOrdValue(Idx);
  174. end;
  175. {-- TMMBitmapThumbIndexProperty -----------------------------------------------}
  176. function TMMBitmapThumbIndexProperty.GetAttributes: TPropertyAttributes;
  177. begin
  178.    Result := [paMultiSelect, paDialog, paRevertable];
  179. end;
  180. {== TMMBitmapLEDDigitConnectEditor ============================================}
  181. procedure TMMBitmapLEDDigitConnectEditor.GetValues(Proc: TGetStrProc);
  182. type
  183.   TGetStrFunc = function(const Value: string): Integer of object;
  184. var
  185.    i: Integer;
  186.    LED: TMMBitmapLEDDigit;
  187.    Component: TComponent;
  188. begin
  189.    LED := GetComponent(0) as TMMBitmapLEDDigit;
  190.    {$IFDEF DELPHI6}
  191.    for i := 0 to Designer.Root.ComponentCount-1 do
  192.    {$ELSE}
  193.    for i := 0 to Designer.Form.ComponentCount-1 do
  194.    {$ENDIF}
  195.    begin
  196.       {$IFDEF DELPHI6}
  197.       Component := Designer.Root.Components[i];
  198.       {$ELSE}
  199.       Component := Designer.Form.Components[i];
  200.       {$ENDIF}
  201.       if (Component.Name <> '') then
  202.          if (Component is TMMBitmapLEDDigit) and (Component <> LED) then
  203.             Proc(Component.Name);
  204.    end;
  205. end;
  206. end.