optdlg.pas

来自「delphi代码格式化,最新汉化版」· PAS 代码 · 共 577 行 · 第 1/2 页

PAS
577
字号
    end
end;

procedure TOptionsDlg.UpdateButtons;
begin
  with Formatter do
    if Formatter <> nil then
    begin
      CapFileNameEdit.Text := string(CapFileName);
      ShortCutEdit.Text := ShortCutText;
      SpacePerIndentUpDown.Position := SpacePerIndent;
      IndentBeginCheck.Checked := indentBegin;
      IndentCommentsCheck.Checked := IndentComments;
      IndentCompDirectivesCheck.Checked := IndentCompDirectives;
      IndentTryCheck.Checked := IndentTry;
      IndentTryElseCheck.Checked := IndentTryElse;
      IndentCaseElseCheck.Checked := IndentCaseElse;
      UpperCompDirectivesCheck.Checked := UpperCompDirectives;
      UpperNumbersCheck.Checked := UpperNumbers;
      ReservedCaseCombo.ItemIndex := Byte(ReservedCase);
      StandDirectivesCombo.ItemIndex := Byte(StandDirectivesCase);
      BlankProcCheck.Checked := BlankProc;
      BlankSubProcCheck.Checked := BlankSubProc;
      RemoveDoubleBlankCheck.Checked := RemoveDoubleBlank;
      with SpaceGrid do
      begin
        RowCount := 10;
        Cells[0, 0] := '描述';
        Cells[1, 0] := '运算符';
        Cells[2, 0] := '间隔';
        AddSpaceRow(1, '赋值', ':=', SpaceEqualOper);
        AddSpaceRow(2, '数学运算符', '< > = + - / * etc.', SpaceOperators);
        AddSpaceRow(3, '冒号', ':', SpaceColon);
        AddSpaceRow(4, '分号', ';', SpaceSemiColon);
        AddSpaceRow(5, '逗号', ',', SpaceComma);
        AddSpaceRow(6, '左括号', '(', SpaceLeftBr);
        AddSpaceRow(7, '右括号', ')', SpaceRightBr);
        AddSpaceRow(8, '左方括号', '[', SpaceLeftHook);
        AddSpaceRow(9, '右方括号', ']', SpaceRightHook);
      end;
      FeedAfterSemiColonCheck.Checked := FeedAfterSemiColon;
      FeedEachUnitCheck.Checked := FeedEachUnit;
      FeedAfterThenCheck.Checked := FeedAfterThen;
      ExceptSingleCheck.Checked := ExceptSingle;
      NoFeedBeforeThenCheck.Checked := NoFeedBeforeThen;
      FeedAfterVarCheck.Checked := FeedAfterVar;
      FeedElseIfCheck.Checked := FeedElseIf;
      NoIndentElseIfCheck.Checked := NoIndentElseIf;
      FeedBeforeEndCheck.Checked := FeedBeforeEnd;
      WrapLinesCheck.Checked := WrapLines;
      WrapPositionUpDown.Position := WrapPosition;
      AlignCommentsCheck.Checked := AlignComments;
      AlignCommentPosUpDown.Position := AlignCommentPos;
      AlignVarCheck.Checked := AlignVar;
      AlignVarPosUpDown.Position := AlignVarPos;
      FillNewWordsCombo.ItemIndex := Byte(FillNewWords);
      StartCommentOutEdit.Text := string(StartCommentOut);
      EndCommentOutEdit.Text := string(EndCommentOut);
      FeedRoundBeginCombo.ItemIndex := Integer(FeedRoundBegin);
      SpacePerIndentUpDown.Associate := SpacePerIndentEdit;
      WrapPositionUpDown.Associate := WrapPositionEdit;
      AlignCommentPosUpDown.Associate := AlignCommentPosEdit;
      AlignVarPosUpDown.Associate := AlignVarPosEdit;
      EditButton.Enabled := CapFileNameEdit.Text <> '';
      FeedAfterThenCheckClick(nil)
    end;
end;

function TOptionsDlg.GetFormatterSettings(OldCapFileName: PChar): TSettings;
begin
  with Formatter do
  begin
    Result := Formatter.Settings;
    if CapFileName <> nil then
      StrCopy(OldCapFileName, Formatter.CapFileName)
    else
      OldCapFileName^ := #0;
  end;
end;

procedure TOptionsDlg.SetFormatterSettings(OldSettings: TSettings; OldCapFileName: PChar);
begin
  with Formatter do
  begin
    Settings := OldSettings;
    if OldCapFileName^ <> #0 then
      CapFileName := OldCapFileName
    else
      CapFileName := nil;
    CapFileNameEdit.Text := string(OldCapFileName);
  end;
end;

procedure TOptionsDlg.SetDefault(BorlandStyle:boolean);
var
  OldSettings: TSettings;
  OldCapFileName: array[0..Max_path] of Char;
begin
  with Formatter do
    if Formatter <> nil then
    begin
      SpacingCombo.Hide;
      OldSettings := GetFormatterSettings(OldCapFileName);
      if BorlandStyle then
         Formatter.SetBorland
      else
        Formatter.SetDefault;
      UpdateButtons;
      SetFormatterSettings(OldSettings, OldCapFileName);
      if PageControl1.ActivePage = TabSheet3 then
        TabSheet3Show(nil);
    end;
end;

procedure TOptionsDlg.DefaultBtnClick(Sender: TObject);
begin
  SetDefault(False);
end;

procedure TOptionsDlg.CapFileNameButtonClick(Sender: TObject);
begin
  OpenDialog.FileName := CapFileNameEdit.Text;
  if OpenDialog.Execute then
        CapFileNameEdit.Text := OpenDialog.FileName;
 CapFileNameEditChange(Sender);
end;

procedure TOptionsDlg.HelpButtonClick(Sender: TObject);
begin
  if HelpFile <> nil then
  begin
    WinHelp(0, PChar(HelpFile), HELP_KEY,
      Integer(PageControl1.ActivePage.Caption));
  end;
end;

procedure TOptionsDlg.ShortCutEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  AShortCut: TShortCut;
  S: string;
begin
  if (Shift = [ssAlt, ssCtrl]) or (Shift = [ssCtrl])
    or (Shift = [ssAlt]) or (Key in [VK_F1..vk_f12]) then
  begin
    AShortCut := Menus.ShortCut(Key, Shift);
    S := ShortCutToText(AShortCut);
    if Length(S) > 1 then
      ShortCutEdit.Text := S;
  end;
end;

procedure TOptionsDlg.EditButtonClick(Sender: TObject);
var
  FileEditDlg: TFileEditDlg;
  Cur: TCursor;
begin
  Cur := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  if Formatter <> nil then
    with Formatter do
      if FillNewWords in [fmAddNewWord, fmAddUse, fmAddUseExcept] then
        SaveCapFile(PChar(CapFileNameEdit.Text));
  FileEditDlg := TFileEditDlg.Create(Self);
  try
    FileEditDlg.LoadFile(CapFileNameEdit.Text);
    Screen.Cursor := Cur;
    FileEditDlg.ShowModal;
    if FileEditDlg.IsChanged then Formatter.LoadCapFile(PChar(CapFileNameEdit.Text));
  finally
    Screen.Cursor := Cur;
    FileEditDlg.Free;
  end;
end;

procedure TOptionsDlg.CapFileNameEditChange(Sender: TObject);
begin
  EditButton.Enabled := CapFileNameEdit.Text <> '';
end;

procedure TOptionsDlg.TabSheet3Show(Sender: TObject);
var
  OldSettings: TSettings;
  OldCapFileName: array[0..Max_path] of Char;
begin
  with Formatter do
    if Formatter <> nil then
    begin
      OldSettings := GetFormatterSettings(OldCapFileName);
      UpdateFormatter;
      Formatter.Clear;
      Formatter.Text := PChar(BeforeMemo.Text);
      if Formatter.Parse then
      begin
        AfterMemo.Lines.BeginUpdate;
        AfterMemo.Lines.Clear;
        AfterMemo.Text := Formatter.Text;
        AfterMemo.Lines.EndUpdate;
        BeforeMemoClick(nil);
      end;
      SetFormatterSettings(OldSettings, OldCapFileName);
    end;
end;

procedure TOptionsDlg.BeforeMemoClick(Sender: TObject);
var
  CurLine2, CurLine: Integer;
begin
  CurLine := SendMessage(BeforeMemo.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
  CurLine2 := SendMessage(AfterMemo.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
  SendMessage(AfterMemo.Handle, EM_LINESCROLL, 0, CurLine - CurLine2);
  AfterMemo.SelStart := BeforeMemo.SelStart;
end;

procedure TOptionsDlg.BeforeMemoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  BeforeMemoClick(nil);
end;

procedure TOptionsDlg.BeforeMemoKeyPress(Sender: TObject; var Key: Char);
begin
  BeforeMemoClick(nil);
end;

procedure TOptionsDlg.BeforeMemoMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  BeforeMemoClick(nil);
end;

procedure TOptionsDlg.SpacingComboExit(Sender: TObject);
begin
  with SpaceGrid do
    Cells[Col, Row] := SpacingCombo.Text;
end;

procedure TOptionsDlg.SpaceGridClick(Sender: TObject);
var
  Rect: TRect;
  Pnt: TPoint;
begin
  with SpaceGrid do
    if Col = 2 then
    begin
      with SpacingCombo do
        ItemIndex := Items.IndexOf(Cells[2, Row]);
      Rect := CellRect(2, Row);
      with Rect do
      begin
        Pnt := SpacingCombo.Parent.ScreenToClient((SpaceGrid.ClientToScreen(Point(Left,
          Top))));
        SpacingCombo.SetBounds(Pnt.X, Pnt.Y, Right - Left, Bottom - Top);
        SpacingCombo.Show;
      end;
    end;

end;

procedure TOptionsDlg.SpaceGridTopLeftChanged(Sender: TObject);
begin
  SpacingCombo.Hide;
end;

procedure TOptionsDlg.FormShow(Sender: TObject);
begin
  FillSpaceCombo(SpacingCombo);
  UpdateButtons;
  FillPreview;
  PageControl1.ActivePage := Indent;
  CapFileNameButton.Height := CapFileNameEdit.Height;
  CapFileNameButton.Left := CapFileNameEdit.Left + CapFileNameEdit.Width + 3;
  CapFileNameButton.Top := CapFileNameEdit.Top;
end;

procedure TOptionsDlg.BorlandButtonClick(Sender: TObject);
begin
               SetDefault(True);
end;

procedure TOptionsDlg.FeedAfterThenCheckClick(Sender: TObject);
begin
   ExceptSingleCheck.Enabled:= FeedAfterThenCheck.Checked;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?