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

📄 optdlg.pas

📁 适用于 Delphi 2-7 的Delphi控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{|----------------------------------------------------------------------
 | Unit:        OptDlg
 |
 | Author:      Egbert van Nes
 |
 | Description: Dialog box with options of DelForExp
 |
 | Copyright (c) 2000  Egbert van Nes
 |   All rights reserved
 |   Disclaimer and licence notes: see license.txt
 |
 |----------------------------------------------------------------------
}
unit OptDlg;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
 Buttons, ExtCtrls, ComCtrls, Delfor1, Dialogs, Grids, DelForTypes{, DesignWindows};

type
 TDelForEx9OptionsDlg = class(TForm) //TForm
  OKBtn: TButton;
  CancelBtn: TButton;
  PageControl1: TPageControl;
  Indent: TTabSheet;
  Spaces: TTabSheet;
  Blanklines: TTabSheet;
  SpacePerIndentEdit: TEdit;
  SpacePerIndentUpDown: TUpDown;
  Label1: TLabel;
  Capitals: TTabSheet;
  IndentBeginCheck: TCheckBox;
  UpperCompDirectivesCheck: TCheckBox;
  BlankProcCheck: TCheckBox;
  BlankSubProcCheck: TCheckBox;
  Label2: TLabel;
  IndentTryCheck: TCheckBox;
  Label3: TLabel;
  FeedAfterSemiColonCheck: TCheckBox;
  FeedRoundBeginCombo: TComboBox;
  Label4: TLabel;
  FeedAfterThenCheck: TCheckBox;
  FeedBeforeEndCheck: TCheckBox;
  UpperNumbersCheck: TCheckBox;
  IndentTryElseCheck: TCheckBox;
  Label6: TLabel;
  Label7: TLabel;
  DefaultBtn: TButton;
  TabSheet1: TTabSheet;
  Label8: TLabel;
  Label9: TLabel;
  Label10: TLabel;
  StartCommentOutEdit: TEdit;
  EndCommentOutEdit: TEdit;
  Label11: TLabel;
  CapFileNameButton: TButton;
  CapFileNameEdit: TEdit;
  OpenDialog: TOpenDialog;
  WrapLinesCheck: TCheckBox;
  Label13: TLabel;
  WrapPositionEdit: TEdit;
  WrapPositionUpDown: TUpDown;
  HelpButton: TButton;
  FeedAfterVarCheck: TCheckBox;
  Label14: TLabel;
  ReservedCaseCombo: TComboBox;
  Label15: TLabel;
  StandDirectivesCombo: TComboBox;
  IndentCommentsCheck: TCheckBox;
  IndentCompDirectivesCheck: TCheckBox;
  TabSheet2: TTabSheet;
  AlignCommentsCheck: TCheckBox;
  Label16: TLabel;
  AlignCommentPosEdit: TEdit;
  AlignCommentPosUpDown: TUpDown;
  AlignVarCheck: TCheckBox;
  Label17: TLabel;
  AlignVarPosEdit: TEdit;
  AlignVarPosUpDown: TUpDown;
  FillNewWordsCombo: TComboBox;
  FeedElseIfCheck: TCheckBox;
  NoFeedBeforeThenCheck: TCheckBox;
  NoIndentElseIfCheck: TCheckBox;
  IndentCaseElseCheck: TCheckBox;
  Label12: TLabel;
  ShortCutEdit: TEdit;
  RemoveDoubleBlankCheck: TCheckBox;
  EditButton: TButton;
  TabSheet3: TTabSheet;
  BeforeMemo: TMemo;
  Label18: TLabel;
  AfterMemo: TMemo;
  Label19: TLabel;
  SpaceGrid: TStringGrid;
  SpacingCombo: TComboBox;
  FeedEachUnitCheck: TCheckBox;
  ExceptSingleCheck: TCheckBox;
  BorlandButton: TButton;
  procedure CancelBtnClick(Sender: TObject);
  procedure OKBtnClick(Sender: TObject);
  procedure FormClose(Sender: TObject; var Action: TCloseAction);
  procedure DefaultBtnClick(Sender: TObject);
  procedure CapFileNameButtonClick(Sender: TObject);
  procedure HelpButtonClick(Sender: TObject);
  procedure ShortCutEditKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
  procedure EditButtonClick(Sender: TObject);
  procedure CapFileNameEditChange(Sender: TObject);
  procedure TabSheet3Show(Sender: TObject);
  procedure BeforeMemoClick(Sender: TObject);
  procedure BeforeMemoKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
  procedure BeforeMemoKeyPress(Sender: TObject; var Key: Char);
  procedure BeforeMemoMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
  procedure SpacingComboExit(Sender: TObject);
  procedure SpaceGridClick(Sender: TObject);
  procedure SpaceGridTopLeftChanged(Sender: TObject);
  procedure FormShow(Sender: TObject);
  procedure BorlandButtonClick(Sender: TObject);
  procedure FeedAfterThenCheckClick(Sender: TObject);
 private
  { Private declarations }
  procedure UpdateButtons;
  procedure FillPreview;
  procedure UpdateFormatter;
  procedure SetFormatterSettings(OldSettings: TSettings; OldCapFileName: PChar);
  function GetFormatterSettings(OldCapFileName: PChar): TSettings;
  procedure FillSpaceCombo(ACombo: TComboBox);
  procedure AddSpaceRow(RowNo: Integer; StrCol1, StrCol2: string;
   Space: TSpaceBefore);
  function GetSpaceItem(I: Integer): TSpaceBefore;
  procedure SetDefault(BorlandStyle: boolean);
 public
  HelpFile: PChar;
  //  Formatter: TPascalParser;
      { Public declarations }
 end;
 
var
 DelForEx9OptionsDlg: TDelForEx9OptionsDlg = nil;
 
implementation
uses Menus, EditFile, Messages;
{$R *.DFM}
const
 str_None = 'None';
 str_Before = 'Before only';
 str_after = 'After only';
 str_BeforeAfter = 'Before and after';
 
function StrTrim(Dest: PChar): PChar;
var
 P: PChar;
begin
 if Dest^ <> #0 then
  begin
   P := StrEnd(Dest) - 1;
   while (P > Dest) and (P^ = ' ') do
    Dec(P);
   if P^ <> ' ' then inc(P);
   P^ := #0;
  end;
 StrTrim := Dest;
end;

function StrLTrim(Dest: PChar): PChar;
var
 P: PChar;
begin
 P := Dest;
 while (P^ = ' ') and (P^ <> #0) do
  inc(P);
 StrLTrim := StrCopy(Dest, P);
end;

procedure TDelForEx9OptionsDlg.FillSpaceCombo(ACombo: TComboBox);
begin
 with ACombo.Items do
  begin
   Clear;
   Add(str_None);
   Add(str_Before);
   Add(str_after);
   Add(str_BeforeAfter);
  end;
end;

function TDelForEx9OptionsDlg.GetSpaceItem(I: Integer): TSpaceBefore;
var
 S: string;
begin
 S := SpaceGrid.Cells[2, I];
 Result := spNone;
 if S = str_Before then
  Result := spBefore
 else if S = str_after then
  Result := spAfter
 else if S = str_BeforeAfter then
  Result := spBoth;
end;

procedure TDelForEx9OptionsDlg.UpdateFormatter;
begin
 with Formatter do
  if Formatter <> nil then
   begin
    SpacePerIndent := SpacePerIndentUpDown.Position;
    CapFileName := PChar(CapFileNameEdit.Text);
    ShortCutText := ShortCutEdit.Text;
    indentBegin := IndentBeginCheck.Checked;
    IndentComments := IndentCommentsCheck.Checked;
    IndentCompDirectives := IndentCompDirectivesCheck.Checked;
    IndentTry := IndentTryCheck.Checked;
    IndentTryElse := IndentTryElseCheck.Checked;
    IndentCaseElse := IndentCaseElseCheck.Checked;
    UpperCompDirectives := UpperCompDirectivesCheck.Checked;
    UpperNumbers := UpperNumbersCheck.Checked;
    ReservedCase := TCase(ReservedCaseCombo.ItemIndex);
    StandDirectivesCase := TCase(StandDirectivesCombo.ItemIndex);
    BlankProc := BlankProcCheck.Checked;
    BlankSubProc := BlankSubProcCheck.Checked;
    RemoveDoubleBlank := RemoveDoubleBlankCheck.Checked;
    WrapLines := WrapLinesCheck.Checked;
    WrapPosition := WrapPositionUpDown.Position;
    AlignComments := AlignCommentsCheck.Checked;
    AlignCommentPos := AlignCommentPosUpDown.Position;
    AlignVar := AlignVarCheck.Checked;
    AlignVarPos := AlignVarPosUpDown.Position;
    SpaceEqualOper := GetSpaceItem(1);
    SpaceOperators := GetSpaceItem(2);
    SpaceColon := GetSpaceItem(3);
    SpaceSemiColon := GetSpaceItem(4);
    SpaceComma := GetSpaceItem(5);
    SpaceLeftBr := GetSpaceItem(6);
    SpaceRightBr := GetSpaceItem(7);
    SpaceLeftHook := GetSpaceItem(8);
    SpaceRightHook := GetSpaceItem(9);
    FeedAfterThen := FeedAfterThenCheck.Checked;
    ExceptSingle := ExceptSingleCheck.Checked;
    FeedEachUnit := FeedEachUnitCheck.Checked;
    NoFeedBeforeThen := NoFeedBeforeThenCheck.Checked;
    FeedAfterVar := FeedAfterVarCheck.Checked;
    FeedElseIf := FeedElseIfCheck.Checked;
    NoIndentElseIf := NoIndentElseIfCheck.Checked;
    FeedBeforeEnd := FeedBeforeEndCheck.Checked;
    FeedAfterSemiColon := FeedAfterSemiColonCheck.Checked;
    FillNewWords := TFillMode(FillNewWordsCombo.ItemIndex);
    StrLCopy(StartCommentOut, PChar(StartCommentOutEdit.Text), 20);
    StrLTrim(StrTrim(StartCommentOut));
    StrLCopy(EndCommentOut, PChar(EndCommentOutEdit.Text), 20);
    StrLTrim(StrTrim(EndCommentOut));
    FeedRoundBegin := TFeedBegin(FeedRoundBeginCombo.ItemIndex);
   end;
end;

procedure TDelForEx9OptionsDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 try
  if ModalResult <> mrCancel then
   begin
    UpdateFormatter;
    Formatter.Config(False);
   end;
 except
 end;
end;

procedure TDelForEx9OptionsDlg.AddSpaceRow(RowNo: Integer; StrCol1, StrCol2: string;
 Space: TSpaceBefore);
begin
 with SpaceGrid do
  begin
   Cells[0, RowNo] := StrCol1;
   Cells[1, RowNo] := StrCol2;
   case Space of
    spNone: Cells[2, RowNo] := str_None;
    spBefore: Cells[2, RowNo] := str_Before;
    spAfter: Cells[2, RowNo] := str_after;
    spBoth: Cells[2, RowNo] := str_BeforeAfter;
   end;
  end;
end;

procedure TDelForEx9OptionsDlg.FillPreview;
var
 S: string;
begin
 S := Formatter.RootDir + 'preview.pas';
 if FileExists(S) then
  with BeforeMemo do
   begin
    Clear;
    Lines.LoadFromFile(S);
   end
end;

⌨️ 快捷键说明

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