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

📄 optdlg.pas

📁 适用于 Delphi 2-7 的Delphi控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
procedure TDelForEx9OptionsDlg.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] := 'Description';
      Cells[1, 0] := 'Operators';
      Cells[2, 0] := 'Spacing';
      AddSpaceRow(1, 'Equals', ':=', SpaceEqualOper);
      AddSpaceRow(2, 'Math. operators', '< > = + - / * etc.', SpaceOperators);
      AddSpaceRow(3, 'Colon', ':', SpaceColon);
      AddSpaceRow(4, 'Semicolon', ';', SpaceSemiColon);
      AddSpaceRow(5, 'Comma', ',', SpaceComma);
      AddSpaceRow(6, 'Left parenthesis', '(', SpaceLeftBr);
      AddSpaceRow(7, 'Right parenthesis', ')', SpaceRightBr);
      AddSpaceRow(8, 'Left bracket', '[', SpaceLeftHook);
      AddSpaceRow(9, 'Right bracket', ']', 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 TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.DefaultBtnClick(Sender: TObject);
begin
 SetDefault(False);
end;

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

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

procedure TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.EditButtonClick(Sender: TObject);
var
 DefForEx9FileEditDlg: TDelForEx9FileEditDlg;
 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));
 DefForEx9FileEditDlg := TDelForEx9FileEditDlg.Create(nil);
 //Application.CreateForm(TDelForEx9FileEditDlg, DefForEx9FileEditDlg);
 
 try
  DefForEx9FileEditDlg.LoadFile(CapFileNameEdit.Text);
  Screen.Cursor := Cur;
  DefForEx9FileEditDlg.ShowModal;
  if DefForEx9FileEditDlg.IsChanged then Formatter.LoadCapFile(PChar(CapFileNameEdit.Text));
 finally
  Screen.Cursor := Cur;
  DefForEx9FileEditDlg.Close;
  FreeAndNil(DefForEx9FileEditDlg);
 end;
end;

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

procedure TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.BeforeMemoKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 BeforeMemoClick(nil);
end;

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

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

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

procedure TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.SpaceGridTopLeftChanged(Sender: TObject);
begin
 SpacingCombo.Hide;
end;

procedure TDelForEx9OptionsDlg.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 TDelForEx9OptionsDlg.BorlandButtonClick(Sender: TObject);
begin
 SetDefault(True);
end;

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

procedure TDelForEx9OptionsDlg.OKBtnClick(Sender: TObject);
begin
 ModalResult := mrOk;
end;

procedure TDelForEx9OptionsDlg.CancelBtnClick(Sender: TObject);
begin
 ModalResult := mrCancel;
end;

end.

⌨️ 快捷键说明

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