📄 teeedigrad.pas
字号:
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 + -