📄 advofficetabset.pas
字号:
szRect.Bottom := DrawText(Canvas.Handle,PChar(Caption),Length(Caption), szrect, DT_CALCRECT or DT_LEFT or DT_WORDBREAK);
sizeRect.X := szRect.Left;
sizeRect.Y := szRect.Top;
sizeRect.Width := szRect.Right - szRect.Left;
sizeRect.Height := szRect.Bottom - szRect.Top;
end
else
graphics.MeasureString(Caption, Length(Caption), font, rectf, stringFormat, sizerect);
if (ImgW > 0) then
begin
case Layout of
blGlyphLeft:
begin
x1 := r.Left + 2 + ImgW;
x2 := w - 2 - ImgW;
ImgX := round(sizerect.X - ImgW div 2);
if ImgX < 2 then ImgX := 2;
ImgY := r.Top + Max(0, (h - ImgH) div 2);
end;
blGlyphTop:
begin
y1 := r.Top{ + 2} + ImgH;
y2 := h - 2 - ImgH;
ImgX := r.Left + Max(0, (w - ImgW) div 2);
ImgY := round(y2 - sizerect.Height);
ImgY := Max(0, ImgY div 2);
ImgY := round(y1) - ImgH + ImgY; //round(sizerect.Height) - ImgY - 4;
if ImgY < 2 then ImgY := 2;
end;
blGlyphRight:
begin
x1 := 2;
x2 := w - 4 - ImgW;
ImgX := round(X2 - sizerect.width);
ImgX := Max(0, ImgX div 2);
ImgX := ImgX + round(sizerect.width) + 4;
if ImgX > (w - ImgW) then
ImgX := w - ImgW - 2;
ImgY := r.Top + Max(0, (h - ImgH) div 2);
end;
blGlyphBottom:
begin
y1 := 2;
y2 := h - 2 - ImgH;
ImgX := r.Left + Max(0, (w - ImgW) div 2);
ImgY := round(y2 - sizerect.Height);
ImgY := Max(0, ImgY div 2);
ImgY := round(sizerect.Height + 2) + ImgY;
if ImgY > (h - ImgH) then ImgY := h - ImgH - 2;
end;
end;
end;
rectf := MakeRect(x1,y1,x2,y2);
//graphics.DrawString(Caption, Length(Caption), font, rectf, stringFormat, solidBrush);
if AntiAlias = aaNone then
begin
szRect.Left := round(rectf.X);
szRect.Top := round(rectf.Y);
szRect.Right := szRect.Left + round(rectf.Width);
szRect.Bottom := szRect.Top + round(rectf.Height);
Canvas.Brush.Style := bsClear;
DrawText(Canvas.Handle,PChar(Caption),Length(Caption), szrect, DT_CENTER or DT_VCENTER or DT_SINGLELINE)
end
else
graphics.DrawString(Caption, Length(Caption), font, rectf, stringFormat, solidBrush);
stringformat.Free;
font.Free;
end;
fontfamily.Free;
if DropDownButton then
begin
if DropDownPos = dpRight then
w := w - 8
else
h := h - 8;
end;
if Assigned(Picture) and not Picture.Empty then
begin
if Caption = '' then
Canvas.Draw(r.Left + Max(0, (w - ImgW) div 2), r.Top + Max(0, (h - ImgH) div 2), Picture)
else
Canvas.Draw(ImgX, ImgY, Picture);
end
else
if (ImageIndex <> -1) and Assigned(Images) then
begin
if Caption = '' then
Images.Draw(Canvas, r.Left + Max(0, (w - Images.Width) div 2), r.Top + Max(0, (h - Images.Height) div 2), ImageIndex, EnabledImage)
else
begin
Images.Draw(Canvas, ImgX, ImgY, ImageIndex, EnabledImage);
end;
end;
Canvas.Brush.Style := bsClear;
if DropDownButton then
begin
if DrawDwLine then
begin
Canvas.Pen.Color := PC;
//Canvas.RoundRect(R.Left, R.Top, R.Right, R.Bottom, 6, 6);
if (DropDownPos = dpRight) then
begin
Canvas.MoveTo(DwR.Left, DwR.Top);
Canvas.LineTo(DwR.Left, DwR.Bottom);
end
else
begin
Canvas.MoveTo(DwR.Left, DwR.Top);
Canvas.LineTo(DwR.Right, DwR.Top);
end;
end;
AP.X := DwR.Left + ((DwR.Right - DwR.Left - 5) div 2);
AP.Y := DwR.Top + ((DwR.Bottom - DwR.Top - 3) div 2) + 1;
if not Enabled then
DrawArrow(AP, clGray)
else
DrawArrow(AP, clBlack);
end;
graphics.Free;
end;
procedure DrawVistaGradient(Canvas: TCanvas; r: TRect; CFU, CTU, CFB, CTB, PC: TColor;
GradientU,GradientB: TGDIPGradient; Caption:Widestring; AFont: TFont; Enabled: Boolean; Focus: Boolean;
AntiAlias: TAntiAlias; RoundEdges: Boolean; Direction: TTabPosition = tpTop); overload;
begin
DrawVistaGradient(Canvas, r, CFU, CTU, CFB, CTB, PC, GradientU,GradientB, Caption, AFont,
nil, -1, True, blGlyphLeft, False, False, Enabled, Focus, dpRight, nil, AntiAlias, RoundEdges, Direction);
end;
//------------------------------------------------------------------------------
{ TTabSetTabSettings }
constructor TTabSetTabSettings.Create;
begin
inherited;
FLeftMargin := 4;
FRightMargin := 4;
FHeight := DEFAULT_TABHEIGHT;
FStartMargin := 4;
FEndMargin := 0;
FSpacing := 4;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.Assign(Source: TPersistent);
begin
if (Source is TTabSetTabSettings) then
begin
LeftMargin := (Source as TTabSetTabSettings).LeftMargin;
RightMargin := (Source as TTabSetTabSettings).RightMargin;
Height := (Source as TTabSetTabSettings).Height;
StartMargin := (Source as TTabSetTabSettings).StartMargin;
EndMargin := (Source as TTabSetTabSettings).EndMargin;
end
else
inherited;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.Changed;
begin
if Assigned(FOnChange) then
FOnChange(Self);
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetLeftMargin(const Value: Integer);
begin
if (FLeftMargin <> Value) then
begin
FLeftMargin := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetRightMargin(const Value: Integer);
begin
if (FRightMargin <> Value) then
begin
FRightMargin := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetHeight(const Value: Integer);
begin
if (FHeight <> Value) then
begin
FHeight := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetStartMargin(const Value: Integer);
begin
if (FStartMargin <> Value) then
begin
FStartMargin := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetEndMargin(const Value: Integer);
begin
if (FEndMargin <> Value) then
begin
FEndMargin := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabSettings.SetSpacing(const Value: Integer);
begin
if (FSpacing <> Value) then
begin
FSpacing := Value;
Changed;
end;
end;
//------------------------------------------------------------------------------
{ TTabSetTabScroller }
constructor TTabSetTabScroller.Create;
begin
inherited;
FMin := 0;
FMax := 0;
FPosition := 0;
FVisible := False;
end;
//------------------------------------------------------------------------------
function TTabSetTabScroller.CanGoBack: Boolean;
begin
Result := Position > Min;
end;
//------------------------------------------------------------------------------
function TTabSetTabScroller.CanGoForward: Boolean;
begin
Result := Position < Max;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabScroller.SetMax(const Value: integer);
begin
if Value >= FMin then FMax := Value;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabScroller.SetMin(const Value: integer);
begin
if Value <= FMax then FMin := Value;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabScroller.SetPosition(const Value: integer);
begin
FPosition := Value;
end;
//------------------------------------------------------------------------------
procedure TTabSetTabScroller.SetVisible(const Value: Boolean);
begin
FVisible := Value;
end;
//------------------------------------------------------------------------------
{ TGradientBackground }
procedure TGradientBackground.Assign(Source: TPersistent);
begin
if (Source is TGradientBackground) then
begin
FColor := (Source as TGradientBackground).Color;
FColorTo := (Source as TGradientBackground).ColorTo;
FDirection := (Source as TGradientBackground).Direction;
FSteps := (Source as TGradientBackground).Steps;
end;
end;
//------------------------------------------------------------------------------
procedure TGradientBackground.Changed;
begin
if Assigned(OnChange) then
OnChange(Self);
end;
//------------------------------------------------------------------------------
constructor TGradientBackground.Create;
begin
inherited;
Color := clWhite;
ColorTo := clBtnFace;
Steps := 64;
Direction := gdHorizontal;
end;
//------------------------------------------------------------------------------
procedure TGradientBackground.SetColor(const Value: TColor);
begin
FColor := Value;
Chang
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -