dlgabsbevel.pas

来自「著名的虚拟仪表控件,包含全部源码, 可以在,delphi2007 下安装运行」· PAS 代码 · 共 343 行

PAS
343
字号
unit DlgAbSBevel;

{******************************************************************************}
{ Abakus VCL                                                                   }
{                    Property-editor to adjust TAbSBevel                       }
{                                                                              }
{******************************************************************************}
{        e-Mail: support@abaecker.de , Web: http://www.abaecker.com            }
{------------------------------------------------------------------------------}
{          (c) Copyright 1998..2001 A.Baecker, All rights Reserved             }
{******************************************************************************}

{$I Abks.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, _GClass,
  StdCtrls, AbBevel, ExtCtrls, AbCBitBt, _AbProc, AbVMeter,
  {$IFDEF D6} DesignWindows, DesignEditors, DesignIntf, {$ELSE} DsgnIntf, {$ENDIF}
  Buttons, AbNumEdit;

type
  TAbSBevel_Form = class(TForm)
    ColorDialog1: TColorDialog;
    Colors_Panel: TPanel;
    ColorHighLightFrom_AbBevel: TAbBevel;
    ColorShadowFrom_AbBevel: TAbBevel;
    ColorHighLightTo_AbBevel: TAbBevel;
    ColorShadowTo_AbBevel: TAbBevel;
    ColorHightLight_Label: TLabel;
    ColorShadow_Label: TLabel;
    From_Label: TLabel;
    To_Label: TLabel;
    Color_AbBevel: TAbBevel;
    Color_Label: TLabel;
    SurfaceGrad_GroupBox: TGroupBox;
    SurfaceGrad_Style_GroupBox: TGroupBox;
    SurfaceGrad_Style_AbColBitBtn1: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn2: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn3: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn7: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn8: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn9: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn4: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn5: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn6: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn11: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn12: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn10: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn13: TAbColBitBtn;
    SurfaceGrad_Style_AbColBitBtn14: TAbColBitBtn;
    SurfaceGrad_Visible_CheckBox: TCheckBox;
    SurfaceGrad_Style_Label: TLabel;
    SurfaceGrad_ColorFrom_AbBevel: TAbBevel;
    SurfaceGrad_ColorFrom_Label: TLabel;
    SurfaceGrad_ColorTo_Label: TLabel;
    SurfaceGrad_ColorTo_AbBevel: TAbBevel;
    Panel1: TPanel;
    BevelStyle_Label: TLabel;
    BevelLine_Label: TLabel;
    Width_Label: TLabel;
    Spacing_Label: TLabel;
    BevelStyle_ComboBox: TComboBox;
    BevelLine_ComboBox: TComboBox;
    Width_SpinEdit: TAbNumSpin;
    Offset_GroupBox: TGroupBox;
    Offset_Left_Label: TLabel;
    Offset_Right_Label: TLabel;
    Offset_Top_Label: TLabel;
    Offset_Bottom_Label: TLabel;
    Offset_Right_SpinEdit: TAbNumSpin;
    Offset_Left_SpinEdit: TAbNumSpin;
    Offset_Top_SpinEdit: TAbNumSpin;
    Offset_Bottom_SpinEdit: TAbNumSpin;
    Spacing_SpinEdit: TAbNumSpin;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure BevelStyle_ComboBoxChange(Sender: TObject);
    procedure BevelLine_ComboBoxChange(Sender: TObject);
    procedure Width_SpinEditChange(Sender: TObject);
    procedure Offset_Left_SpinEditChange(Sender: TObject);
    procedure Offset_Right_SpinEditChange(Sender: TObject);
    procedure Offset_Top_SpinEditChange(Sender: TObject);
    procedure Offset_Bottom_SpinEditChange(Sender: TObject);
    procedure Spacing_SpinEditChange(Sender: TObject);
    procedure ColorHighLightFrom_AbBevelClick(Sender: TObject);
    procedure ColorHighLightTo_AbBevelClick(Sender: TObject);
    procedure ColorShadowFrom_AbBevelClick(Sender: TObject);
    procedure ColorShadowTo_AbBevelClick(Sender: TObject);
    procedure Color_AbBevelClick(Sender: TObject);
    procedure SurfaceGrad_Visible_CheckBoxClick(Sender: TObject);
    procedure SurfaceGrad_Style_AbColBitBtn1StatusChanged(Sender: TObject);
    procedure SurfaceGrad_ColorFrom_AbBevelClick(Sender: TObject);
    procedure SurfaceGrad_ColorTo_AbBevelClick(Sender: TObject);
    Procedure UpdateStyleColors;
    procedure Init;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


  TAbSBevelEditor = class(TClassProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;


var
  AbSBevel_Form        : TAbSBevel_Form;
  bvl : TAbSBevel;

implementation

{$R *.DFM}

{==============================================================================}

procedure TAbSBevelEditor.edit;
var
  TmpBevel, bvl2 : TAbSBevel;
  n : Integer;
begin
  TmpBevel := TAbSBevel.Create;
  AbSBevel_Form := TAbSBevel_Form.Create(Application);
  AbLoadFormPos(AbSBevel_Form);
  try
    with AbSBevel_Form do
    begin
      // set start condition
      bvl := TAbSBevel(GetOrdValue);
      TmpBevel.Assign(bvl);  // store the settings
      Init;

      if showModal = mrOK then
      begin
        Modified;
        for n := 1 to PropCount-1 do begin
          bvl2 := TAbSBevel(GetOrdValueAt(n));
          bvl2.Assign(bvl);
        end;
      end else begin
        bvl.Assign(TmpBevel);  // restore old values
      end;

    end;
  finally
    AbSaveFormPos(AbSBevel_Form);
    AbSBevel_Form.Free;
    TmpBevel.Free;
  end;
end;

function TAbSBevelEditor.GetAttributes: TPropertyAttributes;
begin
  Result := [paMultiSelect, paSubProperties, paAutoUpdate, paDialog, paReadOnly];
end;

{==============================================================================}

procedure TAbSBevel_Form.Init;
begin
  BevelStyle_ComboBox.ItemIndex := Ord(bvl.Style);
  BevelLine_ComboBox.ItemIndex := Ord(bvl.BevelLine);
  Width_SpinEdit.Value := bvl.Width;

  Offset_Left_SpinEdit.Value := bvl.Offset.Left;
  Offset_Right_SpinEdit.Value := bvl.Offset.Right;
  Offset_Top_SpinEdit.Value := bvl.Offset.Top;
  Offset_Bottom_SpinEdit.Value := bvl.Offset.Bottom;

  Spacing_SpinEdit.Value := bvl.Spacing;

  Color_AbBevel.BevelOuter.Color := bvl.Color;
  ColorHighLightFrom_AbBevel.BevelOuter.Color := bvl.ColorHighLightFrom;
  ColorShadowFrom_AbBevel.BevelOuter.Color := bvl.ColorShadowFrom;
  ColorHighLightTo_AbBevel.BevelOuter.Color := bvl.ColorHighLightTo;
  ColorShadowTo_AbBevel.BevelOuter.Color := bvl.ColorShadowTo;

  SurfaceGrad_Visible_CheckBox.Checked := bvl.SurfaceGrad.Visible;

  // the following line will update the total group of AbColBitBtn's
  SurfaceGrad_Style_AbColBitBtn1.StatusInt := (1 shl Ord(bvl.SurfaceGrad.Style ));
  SurfaceGrad_ColorFrom_AbBevel.BevelOuter.Color := bvl.SurfaceGrad.ColorFrom;
  SurfaceGrad_ColorTo_AbBevel.BevelOuter.Color := bvl.SurfaceGrad.ColorTo;

  UpdateStyleColors;
end;

procedure TAbSBevel_Form.BevelStyle_ComboBoxChange(Sender: TObject);
begin
  bvl.Style := TBevelStyle(BevelStyle_ComboBox.ItemIndex);
end;

procedure TAbSBevel_Form.BevelLine_ComboBoxChange(Sender: TObject);
begin
  bvl.BevelLine := TBevelLine(BevelLine_ComboBox.ItemIndex);
end;

procedure TAbSBevel_Form.Width_SpinEditChange(Sender: TObject);
begin
  bvl.Width := Width_SpinEdit.ValueAsInt;
end;


procedure TAbSBevel_Form.Offset_Left_SpinEditChange(Sender: TObject);
begin
    bvl.Offset.Left := Offset_Left_SpinEdit.ValueAsInt;
end;

procedure TAbSBevel_Form.Offset_Right_SpinEditChange(Sender: TObject);
begin
  bvl.Offset.Right := Offset_Right_SpinEdit.ValueAsInt;
end;

procedure TAbSBevel_Form.Offset_Top_SpinEditChange(Sender: TObject);
begin
  bvl.Offset.Top := Offset_Top_SpinEdit.ValueAsInt;
end;

procedure TAbSBevel_Form.Offset_Bottom_SpinEditChange(Sender: TObject);
begin
  bvl.Offset.Bottom := Offset_Bottom_SpinEdit.ValueAsInt;
end;

procedure TAbSBevel_Form.Spacing_SpinEditChange(Sender: TObject);
begin
  bvl.Spacing := Spacing_SpinEdit.ValueAsInt;
end;

procedure TAbSBevel_Form.ColorHighLightFrom_AbBevelClick(Sender: TObject);
begin
  ColorDialog1.Color := bvl.ColorHighLightFrom;
  if ColorDialog1.Execute then begin
    bvl.ColorHighLightFrom := ColorDialog1.Color;
    ColorHighLightFrom_AbBevel.BevelOuter.Color := bvl.ColorHighLightFrom;
  end;
end;

procedure TAbSBevel_Form.ColorHighLightTo_AbBevelClick(Sender: TObject);
begin
  ColorDialog1.Color := bvl.ColorHighLightTo;
  if ColorDialog1.Execute then begin
    bvl.ColorHighLightTo := ColorDialog1.Color;
    ColorHighLightTo_AbBevel.BevelOuter.Color := bvl.ColorHighLightTo;
  end;
end;

procedure TAbSBevel_Form.ColorShadowFrom_AbBevelClick(Sender: TObject);
begin
  ColorDialog1.Color := bvl.ColorShadowFrom;
  if ColorDialog1.Execute then begin
    bvl.ColorShadowFrom := ColorDialog1.Color;
    ColorShadowFrom_AbBevel.BevelOuter.Color := bvl.ColorShadowFrom;
  end;
end;

procedure TAbSBevel_Form.ColorShadowTo_AbBevelClick(Sender: TObject);
begin
  ColorDialog1.Color := bvl.ColorShadowTo;
  if ColorDialog1.Execute then begin
    bvl.ColorShadowTo := ColorDialog1.Color;
    ColorShadowTo_AbBevel.BevelOuter.Color := bvl.ColorShadowTo;
  end;
end;

procedure TAbSBevel_Form.Color_AbBevelClick(Sender: TObject);
begin
  if SurfaceGrad_Visible_CheckBox.Checked then exit;
  ColorDialog1.Color := bvl.Color;
  if ColorDialog1.Execute then begin
    bvl.Color := ColorDialog1.Color;
    Color_AbBevel.BevelOuter.Color := bvl.Color;
  end;
end;

procedure TAbSBevel_Form.SurfaceGrad_Visible_CheckBoxClick(
  Sender: TObject);
begin
  bvl.SurfaceGrad.Visible := SurfaceGrad_Visible_CheckBox.Checked ;
  SurfaceGrad_ColorFrom_Label.Enabled := SurfaceGrad_Visible_CheckBox.Checked ;
  SurfaceGrad_ColorTo_Label.Enabled := SurfaceGrad_Visible_CheckBox.Checked ;
  SurfaceGrad_Style_GroupBox.Enabled := SurfaceGrad_Visible_CheckBox.Checked ;
  SurfaceGrad_Style_Label.Enabled := SurfaceGrad_Visible_CheckBox.Checked ;
  Color_Label.Enabled := not SurfaceGrad_Visible_CheckBox.Checked ;
end;

procedure TAbSBevel_Form.SurfaceGrad_Style_AbColBitBtn1StatusChanged(
  Sender: TObject);
begin
  if bvl = nil then exit;   // check if bevel is allredy created,
                            // otherwise error at App. start

  if (Sender as TAbColBitBtn).Checked then begin
    bvl.SurfaceGrad.Style := (Sender as TAbColBitBtn).GradBtnFace.Style;
    SurfaceGrad_Style_Label.Caption := (Sender as TAbColBitBtn).Hint;
  end;
end;

Procedure TAbSBevel_Form.UpdateStyleColors;
var
  n : Integer;
  comp : TComponent;
  btn : TAbColBitBtn;
begin
  for n := 0 to ComponentCount-1 do begin
    comp := Components[n];
    if (comp is TAbColBitBtn) then begin
      btn := comp as TAbColBitBtn;
      btn.GradBtnFace.ColorFrom := bvl.SurfaceGrad.ColorFrom;
      btn.GradBtnFace.ColorTo := bvl.SurfaceGrad.ColorTo;
    end;
  end;
end;

procedure TAbSBevel_Form.SurfaceGrad_ColorFrom_AbBevelClick(
  Sender: TObject);
begin
  if not SurfaceGrad_Visible_CheckBox.Checked then exit;
  ColorDialog1.Color := bvl.SurfaceGrad.ColorFrom;
  if ColorDialog1.Execute then begin
    bvl.SurfaceGrad.ColorFrom := ColorDialog1.Color;
    SurfaceGrad_ColorFrom_AbBevel.BevelOuter.Color := ColorDialog1.Color;
  end;
  UpdateStyleColors;
end;

procedure TAbSBevel_Form.SurfaceGrad_ColorTo_AbBevelClick(Sender: TObject);
begin
  if not SurfaceGrad_Visible_CheckBox.Checked then exit;
  ColorDialog1.Color := bvl.SurfaceGrad.ColorTo;
  if ColorDialog1.Execute then begin
    bvl.SurfaceGrad.ColorTo := ColorDialog1.Color;
    SurfaceGrad_ColorTo_AbBevel.BevelOuter.Color := ColorDialog1.Color;
  end;
  UpdateStyleColors;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?