📄 xpdunitsetup.pas
字号:
MacroListClick(nil);
// Select a parameter
if ParameterList.ItemIndex < 0 then
ParameterList.ItemIndex := 0;
ParameterListClick(nil);
// Reset transaction state
FSetup.Rollback;
end;
procedure TXPDUnitSetupForm.ApplyActionExecute(Sender: TObject);
begin
// Copy current buffered values to persistent store.
FSetup.Commit;
end;
procedure TXPDUnitSetupForm.CancelActionExecute(Sender: TObject);
begin
// Reload form from persistent store.
FSetup.Rollback;
// Refresh parameter values
LoadDisplay;
end;
procedure TXPDUnitSetupForm.CloseActionExecute(Sender: TObject);
begin
// Close form
Close;
end;
procedure TXPDUnitSetupForm.ParameterListClick(Sender: TObject);
const
TemplateColours: array[boolean] of TColor = (clWindow, clBtnFace);
var
FixedParameter: boolean;
CurrentParameter: TXPDUnitParameter;
begin
// Refresh display for selected parameter
// ParameterTemplate is not editable for fixed parameters
FixedParameter := TXPDUnitParameter(ParameterList.ItemIndex)
< System.Low(TXPDUnitVarParameter);
ParameterTemplate.ReadOnly := FixedParameter;
ParameterTemplate.Color := TemplateColours[FixedParameter];
InsertMacroAction.Enabled := not FixedParameter;
ParameterTemplate.TabStop := not FixedParameter;
if FixedParameter then
TemplateLabel.Caption := SysUtils.Format('%s &template',
[ParameterList.Items[ParameterList.ItemIndex]])
else
TemplateLabel.Caption := SysUtils.Format('Edit %s &template...',
[ParameterList.Items[ParameterList.ItemIndex]]);
ParameterTemplate.Text := FParameters.Templates(
TXPDUnitParameter(ParameterList.ItemIndex));
ParameterDescription.Lines.Text := FParameters.Descriptions(
TXPDUnitParameter(ParameterList.ItemIndex));
// Evaluate hint for currently selected parameter
if ParameterList.ItemIndex >= 0 then
begin
CurrentParameter := TXPDUnitParameter(ParameterList.ItemIndex);
FParameters.ClearValues;
FParameters.EvaluateValues;
ParameterList.Hint := SysUtils.Format('Current %s = "%s"',
[FParameters.Identifiers(CurrentParameter),
FParameters.Values[CurrentParameter]])
end
else
ParameterList.Hint := '';
end;
procedure TXPDUnitSetupForm.ApplyActionUpdate(Sender: TObject);
begin
// Apply enabled when there are unsaved changes
ApplyAction.Enabled := FSetup.InTransaction;
end;
procedure TXPDUnitSetupForm.CancelActionUpdate(Sender: TObject);
begin
// Cancel enabled when there are unsaved changes
CancelAction.Enabled := FSetup.InTransaction;
end;
procedure TXPDUnitSetupForm.AddCurrentToTestModuleUsesClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iAddCurrentToTestModule,
AddCurrentToTestModuleUses.Checked);
end;
procedure TXPDUnitSetupForm.AddCurrentToTestProjectUsesClick(
Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iAddCurrentToProject,
AddCurrentToTestProjectUses.Checked);
end;
procedure TXPDUnitSetupForm.AddToProjectGroupClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iAddProjectToGroup,
AddToProjectGroup.Checked);
end;
procedure TXPDUnitSetupForm.ModuleAddPublishedMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iModuleAddPublishedMethods,
ModuleAddPublishedMethods.Checked);
end;
procedure TXPDUnitSetupForm.ModuleAddPublicMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iModuleAddPublicMethods,
ModuleAddPublicMethods.Checked);
end;
procedure TXPDUnitSetupForm.ModuleAddProtectedMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iModuleAddProtectedMethods,
ModuleAddProtectedMethods.Checked);
end;
procedure TXPDUnitSetupForm.ClassAddPublishedMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iClassAddPublishedMethods,
ClassAddPublishedMethods.Checked);
end;
procedure TXPDUnitSetupForm.ClassAddPublicMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iClassAddPublicMethods,
ClassAddPublicMethods.Checked);
end;
procedure TXPDUnitSetupForm.ClassAddProtectedMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iClassAddProtectedMethods,
ClassAddProtectedMethods.Checked);
end;
procedure TXPDUnitSetupForm.ClassAddPrivateMethodsClick(Sender: TObject);
begin
FSetup.WriteBool(sBehaviours, iClassAddPrivateMethods,
ClassAddPrivateMethods.Checked);
end;
procedure TXPDUnitSetupForm.InsertMacroActionExecute(Sender: TObject);
begin
// Focus ParameterTemplate edit
ActiveControl := ParameterTemplate;
// Insert text for selected macro into current selection or cursor position
// in ParameterTemplate control.
ParameterTemplate.SelStart := FTemplateSelStart;
ParameterTemplate.SelLength := FTemplateSelLength;
// Setup for TemplateChange event on setting ParameterTemplate.SelText
FParameterTemplateEdited := true;
ParameterTemplate.SelText := FMacros.Text(TXPDUnitMacro(MacroList.ItemIndex));
// If the selected macro is a macro function, then move edit cursor to
// between function parentheses
if TXPDUnitMacro(MacroList.ItemIndex) >= System.Low(TXPDUnitMethodMacro) then
ParameterTemplate.SelStart := ParameterTemplate.SelStart - 1;
end;
procedure TXPDUnitSetupForm.ParameterTemplateKeyPress(Sender: TObject;
var Key: Char);
begin
FParameterTemplateEdited := not ParameterTemplate.ReadOnly;
end;
procedure TXPDUnitSetupForm.ParameterTemplateChange(Sender: TObject);
begin
if FParameterTemplateEdited then
begin
// Buffer current trimmed ParameterTemplate content
FSetup.WriteString('Templates',
ParameterList.Items[ParameterList.ItemIndex],
SysUtils.Trim(ParameterTemplate.Text));
// Clear flag for next TemplateKeyPress() event
FParameterTemplateEdited := false;
end;
end;
procedure TXPDUnitSetupForm.ParameterTemplateExit(Sender: TObject);
begin
// Cache current cursor position and selection for potential macro insertion.
FTemplateSelStart := ParameterTemplate.SelStart;
FTemplateSelLength := ParameterTemplate.SelLength;
end;
procedure TXPDUnitSetupForm.RestoreDefaultsActionExecute(Sender: TObject);
begin
// Clear current settings
FSetup.RestoreDefaults;
// Load defaults
LoadDisplay;
end;
procedure TXPDUnitSetupForm.MacroListClick(Sender: TObject);
begin
// Set macro description
MacroDescription.Lines.Text := FMacros.Descriptions(
TXPDUnitMacro(MacroList.ItemIndex));
end;
////////////////////////////////////////////////////////////////////////////
// IXPDUnitBehaviours implementation
////////////////////////////////////////////////////////////////////////////
constructor TBehaviours.Create;
begin
inherited Create;
FSetup := TIniFile.Create(XPDUnitSetupFile);
end;
destructor TBehaviours.Destroy;
begin
FSetup.Free;
inherited;
end;
function TBehaviours.AddProjectToGroup: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iAddProjectToGroup,
dAddProjectToGroup);
end;
function TBehaviours.AddCurrentToProject: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iAddCurrentToProject,
dAddCurrentToProject);
end;
function TBehaviours.AddCurrentToTestModule: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iAddCurrentToTestModule,
dAddCurrentToTestModule);
end;
function TBehaviours.ModuleAddCurrentPublishedMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iModuleAddPublishedMethods,
dModuleAddPublishedMethods);
end;
function TBehaviours.ModuleAddCurrentPublicMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iModuleAddPublicMethods,
dModuleAddPublicMethods);
end;
function TBehaviours.ModuleAddCurrentProtectedMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iModuleAddProtectedMethods,
dModuleAddProtectedMethods);
end;
function TBehaviours.ClassAddCurrentPublishedMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iClassAddPublishedMethods,
dClassAddPublishedMethods);
end;
function TBehaviours.ClassAddCurrentPublicMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iClassAddPublicMethods,
dClassAddPublicMethods);
end;
function TBehaviours.ClassAddCurrentProtectedMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iClassAddProtectedMethods,
dClassAddProtectedMethods);
end;
function TBehaviours.ClassAddCurrentPrivateMethods: boolean;
begin
Result := FSetup.ReadBool(sBehaviours, iClassAddPrivateMethods,
dClassAddPrivateMethods);
end;
initialization
finalization
LForm.Free;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -