📄 syneditmiscclasses.pas
字号:
begin
Value := MinMax(Value, 2, 12);
if fDigitCount <> Value then begin
fDigitCount := Value;
fAutoSizeDigitCount := fDigitCount;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetLeadingZeros(const Value: boolean);
begin
if fLeadingZeros <> Value then begin
fLeadingZeros := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetLeftOffset(Value: integer);
begin
Value := Max(0, Value);
if fLeftOffset <> Value then begin
fLeftOffset := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetLeftOffsetColor(const Value: TColor);
begin
if Value <> fLeftOffsetColor then
begin
fLeftOffsetColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetRightOffset(Value: integer);
begin
Value := Max(0, Value);
if fRightOffset <> Value then begin
fRightOffset := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetRightOffsetColor(const Value: TColor);
begin
if Value <> fRightOffsetColor then
begin
fRightOffsetColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetShowLineNumbers(const Value: boolean);
begin
if fShowLineNumbers <> Value then begin
fShowLineNumbers := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetUseFontStyle(Value: boolean);
begin
if fUseFontStyle <> Value then begin
fUseFontStyle := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetVisible(Value: boolean);
begin
if fVisible <> Value then begin
fVisible := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetWidth(Value: integer);
begin
Value := Max(0, Value);
if fWidth <> Value then begin
fWidth := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetZeroStart(const Value: boolean);
begin
if fZeroStart <> Value then begin
fZeroStart := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetBorderStyle(const Value: TSynGutterBorderStyle);
begin
fBorderStyle := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
procedure TSynGutter.SetLineNumberStart(const Value: Integer);
begin
if Value <> fLineNumberStart then
begin
fLineNumberStart := Value;
if fLineNumberStart < 0 then
fLineNumberStart := 0;
if fLineNumberStart = 0 then
fZeroStart := True
else
fZeroStart := False;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetBorderColor(const Value: TColor);
begin
if fBorderColor <> Value then
begin
fBorderColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetGradient(const Value: Boolean);
begin
if Value <> fGradient then
begin
fGradient := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetGradientEndColor(const Value: TColor);
begin
if Value <> fGradientEndColor then
begin
fGradientEndColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetGradientStartColor(const Value: TColor);
begin
if Value <> fGradientStartColor then
begin
fGradientStartColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetGradientSteps(const Value: Integer);
begin
if Value <> fGradientSteps then
begin
fGradientSteps := Value;
if fGradientSteps < 2 then
fGradientSteps := 2;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.SetIntens(const Value: boolean);
begin
if FIntens <> Value then begin
FIntens := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.setLineModifiedColor(const Value: TColor);
begin
if fLineModifiedColor <> Value then begin
fLineModifiedColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.setLineNormalColor(const Value: TColor);
begin
if fLineNormalColor <> Value then begin
fLineNormalColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGutter.setShowLineModified(const Value: Boolean);
begin
if fShowLineModified <> Value then begin
fShowLineModified := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
{ TSynBookMarkOpt }
constructor TSynBookMarkOpt.Create(AOwner: TComponent);
begin
inherited Create;
fDrawBookmarksFirst := TRUE;
fEnableKeys := True;
fGlyphsVisible := True;
fLeftMargin := 2;
fOwner := AOwner;
fXOffset := 12;
end;
procedure TSynBookMarkOpt.Assign(Source: TPersistent);
var
Src: TSynBookMarkOpt;
begin
if (Source <> nil) and (Source is TSynBookMarkOpt) then begin
Src := TSynBookMarkOpt(Source);
fBookmarkImages := Src.fBookmarkImages;
fDrawBookmarksFirst := Src.fDrawBookmarksFirst;
fEnableKeys := Src.fEnableKeys;
fGlyphsVisible := Src.fGlyphsVisible;
fLeftMargin := Src.fLeftMargin;
fXoffset := Src.fXoffset;
if Assigned(fOnChange) then fOnChange(Self);
end else
inherited Assign(Source);
end;
procedure TSynBookMarkOpt.SetBookmarkImages(const Value: TImageList);
begin
if fBookmarkImages <> Value then begin
fBookmarkImages := Value;
if Assigned(fBookmarkImages) then fBookmarkImages.FreeNotification(fOwner);
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynBookMarkOpt.SetDrawBookmarksFirst(Value: boolean);
begin
if Value <> fDrawBookmarksFirst then begin
fDrawBookmarksFirst := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynBookMarkOpt.SetGlyphsVisible(Value: Boolean);
begin
if fGlyphsVisible <> Value then begin
fGlyphsVisible := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynBookMarkOpt.SetLeftMargin(Value: Integer);
begin
if fLeftMargin <> Value then begin
fLeftMargin := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynBookMarkOpt.SetXOffset(Value: integer);
begin
if fXOffset <> Value then begin
fXOffset := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
{ TSynGlyph }
constructor TSynGlyph.Create(aModule: THandle; const aName: string; aMaskColor: TColor);
begin
inherited Create;
if aName <> '' then
begin
fInternalGlyph := TBitmap.Create;
fInternalGlyph.LoadFromResourceName(aModule, aName);
fInternalMaskColor := aMaskColor;
end
else
fInternalMaskColor := clNone;
fVisible := True;
fGlyph := TBitmap.Create;
fGlyph.OnChange := GlyphChange;
fMaskColor := clNone;
end;
destructor TSynGlyph.Destroy;
begin
if Assigned(fInternalGlyph) then
FreeAndNil(fInternalGlyph);
fGlyph.Free;
inherited Destroy;
end;
procedure TSynGlyph.Assign(aSource: TPersistent);
var
vSrc : TSynGlyph;
begin
if Assigned(aSource) and (aSource is TSynGlyph) then
begin
vSrc := TSynGlyph(aSource);
If vSrc.fInternalGlyph <> nil then
fInternalGlyph.Assign(vSrc.fInternalGlyph);
fInternalMaskColor := vSrc.fInternalMaskColor;
fVisible := vSrc.fVisible;
fGlyph.Assign(vSrc.fGlyph);
fMaskColor := vSrc.fMaskColor;
if Assigned(fOnChange) then fOnChange(Self);
end
else
inherited;
end;
procedure TSynGlyph.Draw(aCanvas: TCanvas; aX, aY, aLineHeight: integer);
var
rcSrc, rcDest : TRect;
vGlyph : TBitmap;
vMaskColor : TColor;
begin
if not fGlyph.Empty then
begin
vGlyph := fGlyph;
vMaskColor := fMaskColor;
end
else if Assigned(fInternalGlyph) then
begin
vGlyph := fInternalGlyph;
vMaskColor := fInternalMaskColor;
end
else
Exit;
if aLineHeight >= vGlyph.Height then
begin
rcSrc := Rect(0, 0, vGlyph.Width, vGlyph.Height);
Inc(aY, (aLineHeight - vGlyph.Height) div 2);
rcDest := Rect(aX, aY, aX + vGlyph.Width, aY + vGlyph.Height);
end
else
begin
rcDest := Rect(aX, aY, aX + vGlyph.Width, aY + aLineHeight);
aY := (vGlyph.Height - aLineHeight) div 2;
rcSrc := Rect(0, aY, vGlyph.Width, aY + aLineHeight);
end;
{$IFDEF SYN_CLX}
if vMaskColor = clNone then
vGlyph.Transparent := False
else begin
vGlyph.TransparentColor := vMaskColor;
vGlyph.Transparent := True;
end;
aCanvas.CopyRect(rcDest, vGlyph.Canvas, rcSrc);
{$ELSE}
aCanvas.BrushCopy(rcDest, vGlyph, rcSrc, vMaskColor);
{$ENDIF}
end;
procedure TSynGlyph.SetGlyph(Value: TBitmap);
begin
fGlyph.Assign(Value);
end;
procedure TSynGlyph.GlyphChange(Sender: TObject);
begin
if Assigned(fOnChange) then fOnChange(Self);
end;
procedure TSynGlyph.SetMaskColor(Value: TColor);
begin
if fMaskColor <> Value then
begin
fMaskColor := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
procedure TSynGlyph.SetVisible(Value: boolean);
begin
if fVisible <> Value then
begin
fVisible := Value;
if Assigned(fOnChange) then fOnChange(Self);
end;
end;
function TSynGlyph.GetWidth : integer;
begin
if not fGlyph.Empty then
Result := fGlyph.Width
else
if Assigned(fInternalGlyph) then
Result := fInternalGlyph.Width
else
Result := 0;
end;
function TSynGlyph.GetHeight : integer;
begin
if not fGlyph.Empty then
Result := fGlyph.Height
else
if Assigned(fInternalGlyph) then
Result := fInternalGlyph.Height
else
Result := 0;
end;
{ TSynMethodChain }
procedure TSynMethodChain.Add(AEvent: TMethod);
begin
if not Assigned(@AEvent) then
raise ESynMethodChain.CreateFmt(
'%s.Entry : the parameter `AEvent'' must be specified.', [ClassName]);
with FNotifyProcs, AEvent do
begin
Add(Code);
Add(Data);
end
end;
constructor TSynMethodChain.Create;
begin
inherited;
FNotifyProcs := TList.Create;
end;
destructor TSynMethodChain.Destroy;
begin
FNotifyProcs.Free;
inherited;
end;
function TSynMethodChain.DoHandleException(E: Exception): Boolean;
begin
if not Assigned(FExceptionHandler) then
raise E
else
try
Result := True;
FExceptionHandler(Self, E, Result);
except
raise ESynMethodChain.CreateFmt(
'%s.DoHandleException : MUST NOT occur any kind of exception in '+
'ExceptionHandler', [ClassName]);
end;
end;
procedure TSynMethodChain.Fire;
var
AMethod: TMethod;
i: Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -