⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teeedigrad.pas

📁 第三方控件:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范例。 该
💻 PAS
📖 第 1 页 / 共 2 页
字号:
procedure TTeeGradientEditor.BCancelClick(Sender: TObject);
begin
  if IModified then
  begin
    TheGradient.Assign(Backup);
    TheGradient.Changed(Self);
  end;
end;

procedure TTeeGradientEditor.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Preview);
  Backup.Free;
end;

procedure TTeeGradientEditor.BSwapClick(Sender: TObject);
var tmp : TColor;
begin
  IModified:=True;

  With TheGradient do
  begin
    tmp:=StartColor;
    StartColor:=EndColor;
    EndColor:=tmp;
  end;

  BStart.Repaint;
  BEnd.Repaint;
  SetPreview;
end;

procedure TTeeGradientEditor.CBMidClick(Sender: TObject);
begin
  if not SettingProps then
  begin
    IModified:=True;

    if CBMid.Checked then
       TheGradient.MidColor:=clNone
    else
    begin
      TheGradient.UseMiddleColor;

      if TheGradient.MidColor=clNone then
         TheGradient.MidColor:=clWhite;
    end;

    BMid.Repaint;
    SetPreview;
  end;
end;

procedure TTeeGradientEditor.BMidClick(Sender: TObject);
begin
  IModified:=True;
  CBMid.Checked:=TheGradient.MidColor=clNone;
  SetPreview;
end;

type
  TGalleryPanelAccess=class(TChartGalleryPanel);

procedure TTeeGradientEditor.FormCreate(Sender: TObject);

  Procedure AddGallery(const S:Array of String);
  var t : Integer;
  begin
    for t:=Low(S) to High(S) do
        Gallery.Items.AddObject(S[t],TObject(t));
  end;

  procedure AddDirectionGallery;

    procedure Apply(Index:TGradientDirection);
    begin
      with Directions[Ord(Index)] do
      begin
        Title.Text.Clear;
        View3D:=False;
        Axes.Visible:=False;
        BackWall.Gradient.Visible:=True;
        BackWall.Transparent:=False;
        MarginLeft:=16;
        MarginTop:=22;
        MarginRight:=16;
        MarginBottom:=22;
        BackWall.Gradient.Direction:=TGradientDirection(Index);
      end;
    end;

  var t : TGradientDirection;
      tmp : TGalleryChart;
  begin
    Directions.DisplaySub:=False;
    Directions.NumRows:=2;
    Directions.NumCols:=5;

    for t:=Low(TGradientDirection) to High(TGradientDirection) do
    begin
      tmp:=TGalleryChart.Create(Directions);
      Directions.Charts.Add(tmp);
      tmp.Parent:=Directions;
      tmp.OnClick:=TGalleryPanelAccess(Directions).ChartEvent;
      tmp.OnDblClick:=TGalleryPanelAccess(Directions).ChartOnDblClick;
      tmp.OnEnter:=TGalleryPanelAccess(Directions).ChartEvent;
      tmp.Hint:=CBDirection.Items[Ord(t)]; // -Ord(Low(TGradientDirection))];
      tmp.ShowHint:=True;
      Apply(t);
    end;

    Directions.ResizeCharts;

    TeeTranslateControl(Directions);
  end;

begin
  Align:=alClient;
  BorderStyle:=TeeBorderStyle;

  Preview:=TPreviewGradient.Create(Self);
  Preview.Parent:=TabSheet3;
  Preview.Align:=alClient; // SetBounds(144,16,81,73);

  AddGallery(['Caribe Sun','Business','Hot','Ace','Farm','Sea',
              'Night','Space','Golf','Funky','Sunset','Rainbow',
              'Pastel','Tropical','Sea 2','Desert','Clear day']);

  AddDirectionGallery;

  PageControl1.ActivePage:=TabSheet1;
end;

procedure TTeeGradientEditor.TrackBar1Change(Sender: TObject);
begin
  IModified:=True;
  TheGradient.RadialX:=TrackBar1.Position;
  LRadialX.Caption:=IntToStr(TheGradient.RadialX);
end;

procedure TTeeGradientEditor.TrackBar2Change(Sender: TObject);
begin
  IModified:=True;
  TheGradient.RadialY:=TrackBar2.Position;
  LRadialY.Caption:=IntToStr(TheGradient.RadialY);
end;

procedure TTeeGradientEditor.SBBalanceChange(Sender: TObject);
begin
  if not SettingProps then
  begin
    IModified:=True;
    TheGradient.Balance:=SBBalance.Position;
  end;
  LabelBalance.Caption:=FormatFloat(TeeMsg_DefPercentFormat,TheGradient.Balance);
end;

procedure TTeeGradientEditor.BStartClick(Sender: TObject);
begin
  IModified:=True;
  SetPreview;
end;

procedure TTeeGradientEditor.BEndClick(Sender: TObject);
begin
  IModified:=True;
  SetPreview;
end;

procedure TTeeGradientEditor.SetPreview;
begin
  Preview.Gradient.Visible:=TheGradient.Visible;
  Preview.Gradient.Direction:=TheGradient.Direction;

  Preview.Gradient.StartColor:=TheGradient.StartColor;
  Preview.Gradient.MidColor:=TheGradient.MidColor;
  Preview.Gradient.EndColor:=TheGradient.EndColor;

  SetDirectionGradients;
end;

Function TTeeGradientEditor.IsRectGradient:Boolean;
begin
  result:= (TheGradient.Direction=gdTopBottom) or
           (TheGradient.Direction=gdBottomTop) or
           (TheGradient.Direction=gdLeftRight) or
           (TheGradient.Direction=gdRightLeft);
end;

class procedure TTeeGradientEditor.DefaultGradient(Gradient:TCustomTeeGradient;
                                         IsRectGradient:Boolean; Index:Integer);

  Procedure DefaultGradient(AStart,AMid,AEnd:TColor;
                            ADirection:TGradientDirection=gdTopBottom;
                            ABalance:Integer=50);
  begin
    Gradient.StartColor:=AStart;
    Gradient.MidColor:=AMid;
    Gradient.EndColor:=AEnd;

    if (AMid<>clNone) and (not IsRectGradient) then
       Gradient.Direction:=gdTopBottom;

    Gradient.Direction:=ADirection;
    Gradient.Balance:=ABalance;
  end;

begin
  case Index of
    0: DefaultGradient($00DDDFD2,$00F50A97,$000B80F4);
    1: DefaultGradient(clSilver,clWhite,clDkGray);
    2: DefaultGradient(clRed,clNone,clYellow);
    3: DefaultGradient(clBlack,$00FF8080,clBlack,gdBottomTop,74);
    4: DefaultGradient($00006AD5,clWhite,$000062C4,gdBottomTop,4);
    5: DefaultGradient($00FFFF80,$00FF8080,clNavy,gdBottomTop,55);
    6: DefaultGradient(clWhite,$00800040,clBlack,gdTopBottom,40);
    7: DefaultGradient($00A50320,$00800040,clWhite,gdFromTopLeft);
    8: DefaultGradient($00159902,clSilver,$00D9F986,gdTopBottom);
    9: DefaultGradient($00BD3881,$0087607A,$0052EB85,gdTopBottom);
   10: DefaultGradient($00B85A06,$00A7D8AF,$00001042,gdTopBottom);
   11: DefaultGradient($00A11EE8,$000F8355,$00DD011A,gdTopBottom);
   12: DefaultGradient($00247489,$009491F6,$00FD8B9D);
   13: DefaultGradient($009A414B,$00732FF3,$0020D761);
   14: DefaultGradient($004C031C,$00BACBE1,$00291EF9);
   15: DefaultGradient($00265FB7,$00CE7185,$00604457);
   TeeMaxSampleGradient: DefaultGradient($00FFF3EA,$00E0E6E9,$00CEDBFF);
  end;
end;

procedure TTeeGradientEditor.GalleryClick(Sender: TObject);
begin
  DefaultGradient(TheGradient, IsRectGradient, Integer(Gallery.Items.Objects[Gallery.ItemIndex]));
  RefreshControls;
  SetPreview;
end;

procedure TTeeGradientEditor.DirectionsChangeChart(Sender: TObject);
var tmp : Integer;
begin
  tmp:=Directions.Charts.IndexOf(Directions.SelectedChart);
  TheGradient.Direction:=TGradientDirection(tmp);
  CBDirection.ItemIndex:=tmp;
end;

{ TPreviewGradient }

procedure TPreviewGradient.InternalDraw(const UserRectangle: TRect);
begin
  PanelPaint(UserRectangle);
end;

{ TButtonGradient }

procedure TButtonGradient.Click;
begin
  if Assigned(Instance) then
     if EditTeeGradient(Self,Gradient,OnlyStart) then
     begin
       Repaint;
       inherited;
     end;
end;

procedure TButtonGradient.DrawSymbol(ACanvas: TTeeCanvas);
var R : TRect;
begin
  if Enabled and Assigned(Instance) then
  begin
    R:=SymbolRectangle;
    Gradient.Draw(ACanvas,R);

    with ACanvas do
    begin
      Pen.Style:=psSolid;

      if Gradient.Visible then
         Pen.Color:=clBlack
      else
         Pen.Color:=clDkGray;

      Brush.Style:=bsClear;
      Rectangle(R);
    end;
  end;
end;

function TButtonGradient.GetGradient: TCustomTeeGradient;
begin
  result:=TCustomTeeGradient(Instance);
end;

procedure TButtonGradient.LinkGradient(const Value: TCustomTeeGradient);
begin
  LinkProperty(Value,'');
  Invalidate;
end;

end.

⌨️ 快捷键说明

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