📄 uformviewoptions.pas
字号:
n:= Items.IndexOf(ffOptLang);
if n >= 0
then ItemIndex:= n
else ItemIndex:= Items.IndexOf('English');
finally
Windows.FindClose(h);
Items.EndUpdate;
end;
//List icons
with edIcon do
try
Items.BeginUpdate;
Items.Clear;
Items.Add(MsgViewerIconDef);
Mask:= SIconsFN('*');
if Win32Platform=VER_PLATFORM_WIN32_NT
then h:= FindFirstFileW(PWChar(Mask), fdW)
else h:= FindFirstFileA(PAnsiChar(AnsiString(Mask)), fdA);
if h<>INVALID_HANDLE_VALUE then
repeat
if Win32Platform=VER_PLATFORM_WIN32_NT
then S:= fdW.cFileName
else S:= fdA.cFileName;
S:= ChangeFileExt(S, '');
Items.Append(S);
if Win32Platform=VER_PLATFORM_WIN32_NT
then begin if not FindNextFileW(h, fdW) then Break end
else begin if not FindNextFileA(h, fdA) then Break end;
until false;
n:= Items.IndexOf(ffOptIcon);
if n >= 0
then ItemIndex:= n
else ItemIndex:= 0;
Items.Add(MsgViewerIconSave);
finally
Windows.FindClose(h);
Items.EndUpdate;
end;
//List shortcuts
ffToolbar.RestoreShortcuts;
with ListKeys do
begin
Items.BeginUpdate;
Items.Clear;
SmallImages:= ffToolbar.ImageList;
for n:= 1 to cToolbarButtonsMax do
begin
if not ffToolbar.GetAvail(n, Rec) then Break;
if Rec.FMenuItem.Caption<>'-' then
with Items.Add do
begin
Caption:= GetToolbarButtonId(Rec^);
SubItems.Add(ShortcutToText(Rec.FMenuItem.Shortcut));
ImageIndex:= Rec.FMenuItem.ImageIndex;
Data:= pointer(n);
end;
end;
Items.EndUpdate;
if Items.Count>0 then
Selected:= Items[0];
end;
end;
procedure TFormViewOptions.btnTextOptionsClick(Sender: TObject);
begin
with TFormViewOptionsText.Create(Self) do
try
chkDetect.Checked:= ffTextDetect;
chkDetectOEM.Checked:= ffTextDetectOEM;
edDetectSize.Text:= IntToStr(ffTextDetectSize);
edDetectLimit.Text:= IntToStr(ffTextDetectLimit);
if ShowModal=mrOk then
begin
ffTextDetect:= chkDetect.Checked;
ffTextDetectOEM:= chkDetectOEM.Checked;
ffTextDetectSize:= StrToIntDef(edDetectSize.Text, ffTextDetectSize);
ffTextDetectLimit:= StrToIntDef(edDetectLimit.Text, ffTextDetectLimit);
end;
finally
Release;
end;
end;
procedure TFormViewOptions.chkTextWidthFitClick(Sender: TObject);
begin
edTextWidth.Enabled:= not chkTextWidthFit.Checked;
labTextFixedWidth.Enabled:= edTextWidth.Enabled;
end;
procedure TFormViewOptions.btnMediaColorClick(Sender: TObject);
begin
with ColorDialog1 do
begin
Color:= ffMediaColor;
if Execute then
ffMediaColor:= Color;
end;
end;
procedure TFormViewOptions.edLangChange(Sender: TObject);
begin
with edLang do
begin
if ItemIndex>=0
then ffOptLang:= Items[ItemIndex]
else ffOptLang:= 'English';
DroppedDown:= false;
end;
SetMsgLanguage(ffOptLang);
FormShow(Self);
end;
procedure TFormViewOptions.ListKeysSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
var
Rec: PToolbarButtonRec;
begin
with ListKeys do
begin
btnKeyOk.Enabled:= Assigned(Selected);
HotKey1.Enabled:= btnKeyOk.Enabled;
if Assigned(Selected) then
with Selected do
begin
if ffToolbar.GetAvail(integer(Data), Rec) then
HotKey1.HotKey:= Rec.FMenuItem.Shortcut;
end;
end;
end;
procedure TFormViewOptions.btnKeyOkClick(Sender: TObject);
var
Rec: PToolbarButtonRec;
begin
with ListKeys do
if Assigned(Selected) then
with Selected do
begin
if ffToolbar.GetAvail(integer(Data), Rec) then
begin
Rec.FMenuItem.Shortcut:= HotKey1.HotKey;
SubItems[0]:= ShortCutToText(HotKey1.HotKey);
end;
end;
end;
procedure TFormViewOptions.chkTextReloadClick(Sender: TObject);
begin
chkTextReloadTail.Enabled:= chkTextReload.Checked;
chkTextReloadBeep.Enabled:= chkTextReload.Checked;
end;
procedure TFormViewOptions.FormCreate(Sender: TObject);
var
M: TATViewerMediaMode;
begin
ffImgList:= nil;
ffToolbar:= nil;
with edMediaMode do
begin
Items.Clear;
for M:= Low(TATViewerMediaMode) to High(TATViewerMediaMode) do
if M <> Low(TATViewerMediaMode) then
Items.Add(cATViewerMediaModeNames[M]);
Enabled:= Items.Count > 0;
end;
end;
procedure TFormViewOptions.edMediaModeChange(Sender: TObject);
begin
{$ifdef MEDIA_PLAYER}
edMediaPlayCount.Enabled:= edMediaMode.ItemIndex > 0;
labMediaPlayCount.Enabled:= edMediaPlayCount.Enabled;
{$endif}
end;
procedure TFormViewOptions.btnImageOptionsClick(Sender: TObject);
begin
with TFormViewOptionsImages.Create(Self) do
try
chkUseIView.Checked:= ffIViewEnabled;
edExeIView.Text:= ffIViewExeName;
edExtIView.Text:= ffIViewExtList;
chkPriority.Checked:= ffIViewHighPriority;
chkUseIJL.Checked:= ffIJLEnabled;
edExtIJL.Text:= ffIJLExtList;
if ShowModal=mrOk then
begin
ffIViewEnabled:= chkUseIView.Checked;
ffIViewExeName:= edExeIView.Text;
ffIViewExtList:= edExtIView.Text;
ffIViewHighPriority:= chkPriority.Checked;
ffIJLEnabled:= chkUseIJL.Checked;
ffIJLExtList:= edExtIJL.Text;
end;
finally
Release;
end;
end;
procedure TFormViewOptions.btnGutterOptionsClick(Sender: TObject);
begin
with TFormViewOptionsGutter.Create(Self) do
try
chkShowGutter.Checked:= ffShowGutter;
chkShowLines.Checked:= ffShowLines;
chkLineExt.Checked:= ffLinesExtUse;
edLineExt.Text:= ffLinesExtList;
edLineSize.Text:= IntToStr(ffLinesBufSize);
edLineCount.Text:= IntToStr(ffLinesCount);
ffFontName:= ffGutterFontName;
ffFontSize:= ffGutterFontSize;
ffFontColor:= ffGutterFontColor;
ffFontStyle:= ffGutterFontStyle;
ffFontCharset:= ffGutterFontCharset;
if ShowModal=mrOk then
begin
ffShowGutter:= chkShowGutter.Checked;
ffShowLines:= chkShowLines.Checked;
ffLinesExtUse:= chkLineExt.Checked;
ffLinesExtList:= edLineExt.Text;
ffLinesBufSize:= StrToIntDef(edLineSize.Text, 300);
ffLinesCount:= StrToIntDef(edLineCount.Text, 2000);
ffGutterFontName:= ffFontName;
ffGutterFontSize:= ffFontSize;
ffGutterFontColor:= ffFontColor;
ffGutterFontStyle:= ffFontStyle;
ffGutterFontCharset:= ffFontCharset;
end;
finally
Release;
end;
end;
procedure TFormViewOptions.chkTextOemSpecialClick(Sender: TObject);
begin
labTextFontShowOEM.Enabled:= chkTextOemSpecial.Checked;
btnTextFontOEM.Enabled:= chkTextOemSpecial.Checked;
end;
procedure TFormViewOptions.btnMediaColorLabelClick(Sender: TObject);
begin
with ColorDialog1 do
begin
Color:= ffMediaColorLabel;
if Execute then
ffMediaColorLabel:= Color;
end;
end;
procedure TFormViewOptions.btnMediaColorLabelErrClick(Sender: TObject);
begin
with ColorDialog1 do
begin
Color:= ffMediaColorLabelErr;
if Execute then
ffMediaColorLabelErr:= Color;
end;
end;
procedure TFormViewOptions.btnClearRecentClick(Sender: TObject);
begin
if Assigned(ffClearRecent) then
ffClearRecent;
end;
procedure TFormViewOptions.btnClearSearchClick(Sender: TObject);
begin
if Assigned(ffClearSearch) then
ffClearSearch;
end;
procedure TFormViewOptions.btnFontFooterClick(Sender: TObject);
begin
with FontDialog2 do
begin
Font.Name:= ffFooterFontName;
Font.Size:= ffFooterFontSize;
Font.Color:= ffFooterFontColor;
Font.Style:= ffFooterFontStyle;
Font.CharSet:= ffFooterFontCharset;
if Execute then
begin
ffFooterFontName:= Font.Name;
ffFooterFontSize:= Font.Size;
ffFooterFontColor:= Font.Color;
ffFooterFontStyle:= Font.Style;
ffFooterFontCharset:= Font.CharSet;
labFooterFontShow.Caption:= ffFooterFontName + ', ' + IntToStr(ffFooterFontSize);
end;
end;
end;
procedure TFormViewOptions.FSaveIconsNames(const FileName: string);
var
f: TextFile;
Rec: PToolbarButtonRec;
n, i: integer;
begin
AssignFile(f, FileName);
Rewrite(f);
if IOResult <> 0 then Exit;
Writeln(f, Format('Icons order in the saved "%s" file:', [ChangeFileExt(FileName, '.bmp')]));
Writeln(f);
try
for i:= 0 to ffImgList.Count - 1 do
for n:= 1 to cToolbarButtonsMax do
if ffToolbar.GetAvail(n, Rec) then
if Rec.FMenuItem.ImageIndex = i then
begin
Writeln(f, Format('%d %s', [i, GetToolbarButtonId(Rec^)]));
Break;
end;
finally
CloseFile(f);
end;
end;
procedure TFormViewOptions.edIconChange(Sender: TObject);
var
L: TImageList;
i: Integer;
begin
with edIcon do
//Save template
if (ItemIndex = Items.Count - 1) then
begin
with SaveDialog1 do
if Execute then
begin
FSaveIcons(ffImgList, FileName);
FSaveIconsNames(ChangeFileExt(FileName, '.txt'));
end;
end
else
//Default set
if (ItemIndex = 0) then
begin
Panel1.Visible := False;
ffOptIcon := '';
end
else
//Custom set
with Image1 do
begin
Panel1.Visible := True;
ffOptIcon := Text;
L:= TImageList.CreateSize(16, 16);
try
FLoadIcons(L, SIconsFN(edIcon.Text));
with Panel1 do
SetBounds(Left, edIcon.Top + edIcon.Height - L.Height, 6 * L.Width + 2, L.Height + 2);
Picture.Bitmap.Width := Panel1.Width;
Picture.Bitmap.Height := Panel1.Height;
Canvas.Brush.Color:= clBtnFace;
Canvas.FillRect(Rect(0, 0, Width, Height));
for i:= 0 to 6 do
L.Draw(Canvas, i * L.Width, 0, i);
finally
L.Free;
end;
Invalidate;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -