📄 atviewer.pas
字号:
Show;
if CanSetFocus then
SetFocus;
end;
end;
procedure TATViewer.LoadRTF;
begin
FreeData;
if FFileName = '' then Exit;
InitEdit;
if Assigned(FEdit) then
with FEdit do
begin
//work around RichEdit bug, reset font
Font.Name := 'Webdings';
Font.Size := 8;
Font.Color := clWhite;
Font := GetTextFont;
//RichEdit bug: WordWrap assignment must be after Font assignment, or font will be broken
Color := FTextColor;
WordWrap := FTextWrap;
BorderStyle := FBorderStyleInner;
try
try
DoCursorHours;
RE_LoadFile(FEdit, FFileName, 0, 0);
finally
DoCursorDefault;
end;
except
MsgError(SFormatW(MsgViewerErrCannotLoadFile, [FFileName]));
end;
if Assigned(OnSelectionChange) then
OnSelectionChange(Self);
Show;
if CanSetFocus then
SetFocus;
end;
end;
procedure TATViewer.LoadWeb;
begin
FreeData;
if FFileName = '' then Exit;
InitWeb;
if Assigned(FBrowser) then
try
if WebBrowserSafe then
if FBorderStyleInner = bsNone then
WB_Set3DBorderStyle(FBrowser, FBorderStyleInner <> bsNone);
FBrowser.Show;
{$ifdef OFFLINE}
WB_SetGlobalOffline(FWebOffline);
{$endif}
WB_NavigateFilename(FBrowser, FFileName, FWebWaitForNavigate);
except
end;
end;
procedure TATViewer.SetMode(AValue: TATViewerMode);
begin
DoFileUnload;
FMode := AValue;
HideAll;
if FFileName <> '' then
begin
case FMode of
vmodeText,
vmodeBinary,
vmodeHex,
vmodeUnicode:
LoadBinary;
vmodeRTF:
LoadRTF;
vmodeMedia:
LoadMedia;
vmodeWeb:
LoadWeb;
{$ifdef WLX}
vmodeWLX:
LoadWLX;
{$endif}
end;
DoFileLoad;
end;
end;
procedure TATViewer.SetMediaMode(AValue: TATViewerMediaMode);
begin
if FMediaMode <> AValue then
begin
FreeData;
//FreeMedia; //FreeMedia commented: causes strange AV
FMediaMode := AValue;
end;
end;
function TATViewer.GetTextEncoding: TATEncoding;
begin
case FMode of
vmodeText,
vmodeBinary,
vmodeHex,
vmodeUnicode:
FTextEncoding := FBinHex.TextEncoding;
end;
Result := FTextEncoding;
end;
procedure TATViewer.SetTextEncoding(AValue: TATEncoding);
begin
if FTextEncoding <> AValue then
begin
FTextEncoding := AValue;
case FMode of
vmodeText,
vmodeBinary,
vmodeHex,
vmodeUnicode:
FBinHex.TextEncoding := FTextEncoding;
{$ifdef WLX}
vmodeWLX:
SendWLXParams;
{$endif}
end;
end;
end;
procedure TATViewer.SetTextWrap(AValue: Boolean);
begin
if FTextWrap <> AValue then
begin
FTextWrap := AValue;
FBinHex.TextWrap := FTextWrap;
if Assigned(FEdit) then
FEdit.WordWrap := FTextWrap;
{$ifdef WLX}
if FMode = vmodeWLX then
SendWLXParams;
{$endif}
end;
end;
function TATViewer.GetTextWidth: Integer;
begin
Result := FBinHex.TextWidth;
end;
function TATViewer.GetTextWidthHex: Integer;
begin
Result := FBinHex.TextWidthHex;
end;
function TATViewer.GetTextWidthFit: Boolean;
begin
Result := FBinHex.TextWidthFit;
end;
function TATViewer.GetTextWidthFitHex: Boolean;
begin
Result := FBinHex.TextWidthFitHex;
end;
function TATViewer.GetTextWidthFitUHex: Boolean;
begin
Result := FBinHex.TextWidthFitUHex;
end;
function TATViewer.GetTextOemSpecial: Boolean;
begin
Result := FBinHex.TextOemSpecial;
end;
function TATViewer.GetTextGutter: Boolean;
begin
Result := FBinHex.TextGutter;
end;
function TATViewer.GetTextGutterWidth: Integer;
begin
Result := FBinHex.TextGutterWidth;
end;
function TATViewer.GetTextNonPrintable: Boolean;
begin
Result := FBinHex.TextNonPrintable;
end;
procedure TATViewer.SetTextWidth(AValue: Integer);
begin
FBinHex.TextWidth := AValue;
end;
procedure TATViewer.SetTextWidthHex(AValue: Integer);
begin
FBinHex.TextWidthHex := AValue;
end;
procedure TATViewer.SetTextWidthFit(AValue: Boolean);
begin
FBinHex.TextWidthFit := AValue;
end;
procedure TATViewer.SetTextWidthFitHex(AValue: Boolean);
begin
FBinHex.TextWidthFitHex := AValue;
end;
procedure TATViewer.SetTextWidthFitUHex(AValue: Boolean);
begin
FBinHex.TextWidthFitUHex := AValue;
end;
procedure TATViewer.SetTextOemSpecial(AValue: Boolean);
begin
FBinHex.TextOemSpecial := AValue;
end;
procedure TATViewer.SetTextGutter(AValue: Boolean);
begin
FBinHex.TextGutter:= AValue;
end;
procedure TATViewer.SetTextGutterWidth(AValue: Integer);
begin
FBinHex.TextGutterWidth:= AValue;
end;
procedure TATViewer.SetTextNonPrintable(AValue: Boolean);
begin
FBinHex.TextNonPrintable:= AValue;
end;
procedure TATViewer.SetSearchIndentVert(AValue: Integer);
const
cMaxIndent = 80;
begin
if FSearchIndentVert <> AValue then
begin
FSearchIndentVert := AValue;
ILimitMin(FSearchIndentVert, 0);
ILimitMax(FSearchIndentVert, cMaxIndent);
FBinHex.TextSearchIndentVert := FSearchIndentVert;
end;
end;
procedure TATViewer.SetSearchIndentHorz(AValue: Integer);
const
cMaxIndent = 80;
begin
if FSearchIndentHorz <> AValue then
begin
FSearchIndentHorz := AValue;
ILimitMin(FSearchIndentHorz, 0);
ILimitMax(FSearchIndentHorz, cMaxIndent);
FBinHex.TextSearchIndentHorz := FSearchIndentHorz;
end;
end;
procedure TATViewer.SetMediaPosition;
begin
{$ifdef MEDIA_PLAYER}
if (FMediaMode = vmmodeMCI) and Assigned(FMedia) then
with FMediaBar do
Width := Self.Width - Left;
{$endif}
{$ifdef MEDIA_WMP64}
if (FMediaMode = vmmodeWMP64) and Assigned(FWMP6) then
try
with FWMP6 do
(IDispatch(OleObject) as IOleInPlaceObject).SetObjectRects(BoundsRect, Rect(0, 0, 32767, 32767));
except
end;
{$endif}
{$ifdef MEDIA_WMP9}
if (FMediaMode = vmmodeWMP9) and Assigned(FWMP9) then
try
with FWMP9 do
(IDispatch(OleObject) as IOleInPlaceObject).SetObjectRects(BoundsRect, Rect(0, 0, 32767, 32767));
except
end;
{$endif}
end;
procedure TATViewer.SetMediaFit(AValue: Boolean);
begin
if GetMediaFit <> AValue then
begin
FMediaFit := AValue;
case FMode of
vmodeMedia:
begin
if Assigned(FImageBox) then
FImageBox.ImageFitToWindow := FMediaFit;
{$ifdef MEDIA_WMP64}
if (FMediaMode = vmmodeWMP64) and Assigned(FWMP6) then
SetMediaFit_WMP6(FWMP6);
{$endif}
{$ifdef MEDIA_WMP9}
if (FMediaMode = vmmodeWMP9) and Assigned(FWMP9) then
SetMediaFit_WMP9(FWMP9);
{$endif}
end;
{$ifdef WLX}
vmodeWLX:
SendWLXParams;
{$endif}
end;
end;
end;
procedure TATViewer.SetMediaFitOnlyBig(AValue: Boolean);
begin
if GetMediaFitOnlyBig <> AValue then
begin
FMediaFitOnlyBig := AValue;
case FMode of
vmodeMedia:
if Assigned(FImageBox) then
FImageBox.ImageFitOnlyBig := FMediaFitOnlyBig;
{$ifdef WLX}
vmodeWLX:
SendWLXParams;
{$endif}
end;
end;
end;
procedure TATViewer.SetMediaCenter(AValue: Boolean);
begin
if GetMediaCenter <> AValue then
begin
FMediaCenter := AValue;
case FMode of
vmodeMedia:
if Assigned(FImageBox) then
FImageBox.ImageCenter := FMediaCenter;
{$ifdef WLX}
vmodeWLX:
SendWLXParams;
{$endif}
end;
end;
end;
{$ifdef OFFLINE}
procedure TATViewer.SetWebOffline(AValue: Boolean);
begin
if FWebOffline <> AValue then
begin
FWebOffline := AValue;
if Assigned(FBrowser) then
begin
WB_SetGlobalOffline(FWebOffline);
if (FMode = vmodeWeb) and (FBrowser.Visible) then
WB_NavigateFilename(FBrowser, FFileName, FWebWaitForNavigate);
end;
end;
end;
{$endif}
procedure TATViewer.SetTextColor(AValue: TColor);
begin
if FTextColor <> AValue then
begin
FTextColor := AValue;
FBinHex.Color := FTextColor;
if Assigned(FEdit) then
FEdit.Color := FTextColor;
end;
end;
function TATViewer.GetTextFont: TFont;
begin
Result := FBinHex.Font;
end;
procedure TATViewer.SetTextFont(AValue: TFont);
begin
FBinHex.Font := AValue;
if Assigned(FEdit) then
FEdit.Font := AValue;
end;
function TATViewer.GetTextFontOEM: TFont;
begin
Result := FBinHex.FontOEM;
end;
procedure TATViewer.SetTextFontOEM(AValue: TFont);
begin
FBinHex.FontOEM := AValue;
end;
function TATViewer.GetTextFontFooter: TFont;
begin
Result := FBinHex.FontFooter;
end;
procedure TATViewer.SetTextFontFooter(AValue: TFont);
begin
FBinHex.FontFooter := AValue;
end;
function TATViewer.GetTextColorHex: TColor;
begin
Result := FBinHex.TextColorHex;
end;
function TATViewer.GetTextColorHex2: TColor;
begin
Result := FBinHex.TextColorHex2;
end;
function TATViewer.GetTextColorHexBack: TColor;
begin
Result := FBinHex.TextColorHexBack;
end;
function TATViewer.GetTextColorLines: TColor;
begin
Result := FBinHex.TextColorLines;
end;
function TATViewer.GetTextColorError: TColor;
begin
Result := FBinHex.TextColorError;
end;
function TATViewer.GetTextColorGutter: TColor;
begin
Result := FBinHex.TextColorGutter;
end;
procedure TATViewer.SetTextColorHex(AValue: TColor);
begin
FBinHex.TextColorHex := AValue;
end;
procedure TATViewer.SetTextColorHex2(AValue: TColor);
begin
FBinHex.TextColorHex2 := AValue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -