?? optdlg.pas
字號:
{|----------------------------------------------------------------------
| 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 + -