📄 dxcontainer.pas
字号:
Arguments: Value: TAlignment
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetAlignment(Value: TAlignment);
begin
if Value <> FAlignment then
begin
FAlignment := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetBoundColor
Author: mh
Date: 20-Aug-2002
Arguments: Value: TColor
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetBoundColor(Value: TColor);
begin
if Value <> FBoundColor then
begin
FBoundColor := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetBoundLines
Author: mh
Date: 20-Aug-2002
Arguments: Value: TdxBoundLines
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetBoundLines(Value: TdxBoundLines);
begin
if Value <> FBoundLines then
begin
FBoundLines := Value;
Realign;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetBorderWidth
Author: mh
Date: 20-Aug-2002
Arguments: Value: TBorderWidth
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetBorderWidth(Value: TBorderWidth);
begin
if Value <> FBorderWidth then
begin
FBorderWidth := Value;
Realign;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetEnabledMode
Author: mh
Date: 20-Aug-2002
Arguments: Value: TdxEnabledMode
Result: None
-----------------------------------------------------------------------------}
{$IFDEF DELPHI6}
procedure TdxCustomContainer.SetEnabledMode(Value: TdxEnabledMode);
begin
if Value <> FEnabledMode then
begin
FEnabledMode := Value;
HookEnabledChanged;
end;
end;
{$ENDIF}
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetGlyph
Author: mh
Date: 20-Aug-2002
Arguments: Value: TBitmap
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetGlyph(Value: TBitmap);
begin
if Value <> FGlyph then
begin
FGlyph.Assign(Value);
Realign;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetGlyphLayout
Author: mh
Date: 22-Aug-2002
Arguments: Value: TdxGlyphLayout
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetGlyphLayout(Value: TdxGlyphLayout);
begin
if FGlyphLayout <> Value then
begin
FGlyphLayout := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetLayout
Author: mh
Date: 22-Aug-2002
Arguments: Value: TTextLayout
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetLayout(Value: TTextLayout);
begin
if FLayout <> Value then
begin
FLayout := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetShowBoundLines
Author: M. Hoffmann
Date: 03-Feb-2003
Arguments: Value: Boolean
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetShowBoundLines(Value: Boolean);
begin
if Value <> FShowBoundLines then
begin
FShowBoundLines := Value;
Realign;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetShowCaption
Author: mh
Date: 20-Aug-2002
Arguments: Value: Boolean
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetShowCaption(Value: Boolean);
begin
if Value <> FShowCaption then
begin
FShowCaption := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetSpacing
Author: mh
Date: 20-Aug-2002
Arguments: Value: Byte
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetSpacing(Value: Byte);
begin
if Value <> FSpacing then
begin
FSpacing := Value;
InternalRedraw;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.SetWordWrap
Author: mh
Date: 20-Aug-2002
Arguments: Value: Boolean
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.SetWordWrap(Value: Boolean);
begin
if Value <> FWordWrap then
begin
FWordWrap := Value;
InternalRedraw;
end;
end;
procedure dxDrawText(AParent: TdxCustomControl; ACaption: string; AFont: TFont;
AAlignment: TAlignment; ALayout: TTextLayout; AWordWrap: Boolean; var ARect: TRect);
procedure DoDrawText(Handle: THandle; ACaption: string; var ARect: TRect;
Flags: Integer);
begin
DrawText(Handle, PChar(ACaption), -1, ARect, Flags);
end;
const
Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
WordWraps: array[Boolean] of Word = (0, DT_WORDBREAK);
var
DrawStyle: LongInt;
CalcRect: TRect;
begin
with AParent, Canvas do
begin
DrawStyle := Alignments[AAlignment];
if (DrawStyle <> DT_LEFT) and (ARect.Right - ARect.Left < TextWidth(ACaption)) then
DrawStyle := DT_LEFT;
DrawStyle := DrawStyle or DT_EXPANDTABS or WordWraps[AWordWrap] or DT_END_ELLIPSIS;
if ALayout <> tlTop then
begin
CalcRect := ARect;
DoDrawText(Handle, ACaption, CalcRect, DrawStyle or DT_CALCRECT);
if ALayout = tlBottom then
OffsetRect(ARect, 0, ARect.Bottom - CalcRect.Bottom)
else
OffsetRect(ARect, 0, (ARect.Bottom - CalcRect.Bottom) div 2);
end;
DoDrawText(Handle, ACaption, ARect, DrawStyle);
end;
end;
{-----------------------------------------------------------------------------
Procedure: TdxCustomContainer.Paint
Author: mh
Date: 20-Aug-2002
Arguments: None
Result: None
-----------------------------------------------------------------------------}
procedure TdxCustomContainer.Paint;
var
Rect: TRect;
begin
with Canvas do
begin
Rect := GetClientRect;
Brush.Color := Self.Color;
FillRect(Rect);
if csDesigning in ComponentState then
DrawFocusRect(Rect);
Brush.Style := bsClear;
if (FShowBoundLines) and (FBoundLines <> []) then
dxDrawBoundLines(Self.Canvas, FBoundLines, FBoundColor, Rect);
dxAdjustBoundRect(BorderWidth, FShowBoundLines, FBoundLines, Rect);
if Assigned(FOnPaint) then
FOnPaint(Self, Rect, Self.Canvas, Font);
if not FGlyph.Empty then
begin
FGlyph.Transparent := True;
if FGlyphLayout = glBottom then
Draw(Rect.Left, Rect.Bottom - FGlyph.Height, FGlyph);
if FGlyphLayout = glCenter then
Draw(Rect.Left, ((Rect.Bottom - Rect.Top) - FGlyph.Height) div 2 + 1, FGlyph);
if FGlyphLayout = glTop then
Draw(Rect.Left, Rect.Top, FGlyph);
Inc(Rect.Left, FGlyph.Width);
end;
if FShowCaption then
begin
Font.Assign(Self.Font);
InflateRect(Rect, -FSpacing, -1);
if csDesigning in ComponentState then
begin
Pen.Color := clGray;
Pen.Style := psInsideFrame;
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Left, Rect.Bottom);
MoveTo(Rect.Right, Rect.Top);
LineTo(Rect.Right, Rect.Bottom);
end;
dxDrawText(Self, Caption, Font, FAlignment, FLayout, FWordWrap, Rect);
//dxPlaceText(Self, Canvas, Caption, Font, Enabled, False, FAlignment,
// FWordWrap, Rect);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -