⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uformviewoptions.pas

📁 支持版本:Delphi 5-2009, C++Builder 5-2009 ATViewer特性: Text, Binary, Hex, Unicode:所有文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        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 + -