mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-09 19:16:12 +02:00
IDE: compiler options: added OnChanged handlers
git-svn-id: trunk@27622 -
This commit is contained in:
parent
bc6ef0820f
commit
3d26d69da8
@ -568,7 +568,7 @@ type
|
|||||||
function SaveToFile(AFilename: string): TModalResult;
|
function SaveToFile(AFilename: string): TModalResult;
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
function IsEqual(CompOpts: TBaseCompilerOptions): boolean; virtual;
|
function IsEqual(CompOpts: TBaseCompilerOptions): boolean; virtual;
|
||||||
procedure CreateDiff(CompOpts: TBaseCompilerOptions; Diff: TStrings);
|
procedure CreateDiffAsText(CompOpts: TBaseCompilerOptions; Diff: TStrings);
|
||||||
function CreateDiff(CompOpts: TBaseCompilerOptions;
|
function CreateDiff(CompOpts: TBaseCompilerOptions;
|
||||||
Tool: TCompilerDiffTool = nil): boolean; virtual;
|
Tool: TCompilerDiffTool = nil): boolean; virtual;
|
||||||
|
|
||||||
@ -3127,7 +3127,7 @@ begin
|
|||||||
Tool.Free;
|
Tool.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBaseCompilerOptions.CreateDiff(CompOpts: TBaseCompilerOptions;
|
procedure TBaseCompilerOptions.CreateDiffAsText(CompOpts: TBaseCompilerOptions;
|
||||||
Diff: TStrings);
|
Diff: TStrings);
|
||||||
var
|
var
|
||||||
Tool: TCompilerDiffTool;
|
Tool: TCompilerDiffTool;
|
||||||
|
117
ide/project.pp
117
ide/project.pp
@ -522,7 +522,7 @@ type
|
|||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
function IsEqual(CompOpts: TBaseCompilerOptions): boolean; override;
|
function IsEqual(CompOpts: TBaseCompilerOptions): boolean; override;
|
||||||
function CreateDiff(CompOpts: TBaseCompilerOptions;
|
function CreateDiff(CompOpts: TBaseCompilerOptions;
|
||||||
Tool: TCompilerDiffTool): boolean; override;
|
Tool: TCompilerDiffTool = nil): boolean; override;
|
||||||
procedure InvalidateOptions;
|
procedure InvalidateOptions;
|
||||||
function GetEffectiveLCLWidgetType: string; override;
|
function GetEffectiveLCLWidgetType: string; override;
|
||||||
public
|
public
|
||||||
@ -598,6 +598,7 @@ type
|
|||||||
FChangeStamp: integer;
|
FChangeStamp: integer;
|
||||||
fLastSavedChangeStamp: integer;
|
fLastSavedChangeStamp: integer;
|
||||||
FItems: TStrings;
|
FItems: TStrings;
|
||||||
|
fOnChanged: TMethodList;
|
||||||
function GetMacros(const Name: string): string;
|
function GetMacros(const Name: string): string;
|
||||||
function GetModified: boolean;
|
function GetModified: boolean;
|
||||||
function GetNames(Index: integer): string;
|
function GetNames(Index: integer): string;
|
||||||
@ -621,6 +622,9 @@ type
|
|||||||
procedure IncreaseChangeStamp;
|
procedure IncreaseChangeStamp;
|
||||||
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
||||||
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string; ClearModified: boolean = true);
|
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string; ClearModified: boolean = true);
|
||||||
|
procedure AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
procedure RemoveOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
public
|
||||||
property Modified: boolean read GetModified write SetModified;
|
property Modified: boolean read GetModified write SetModified;
|
||||||
property CfgVars: TCTCfgScriptVariables read FCfgVars;
|
property CfgVars: TCTCfgScriptVariables read FCfgVars;
|
||||||
end;
|
end;
|
||||||
@ -629,32 +633,46 @@ type
|
|||||||
|
|
||||||
TProjectBuildMode = class(TComponent)
|
TProjectBuildMode = class(TComponent)
|
||||||
private
|
private
|
||||||
|
FChangeStamp: int64;
|
||||||
FCompilerOptions: TProjectCompilerOptions;
|
FCompilerOptions: TProjectCompilerOptions;
|
||||||
FBuildMacroValues: TProjectBuildMacros;
|
FBuildMacroValues: TProjectBuildMacros;
|
||||||
FIdentifier: string;
|
FIdentifier: string;
|
||||||
FInSession: boolean;
|
FInSession: boolean;
|
||||||
|
fOnChanged: TMethodList;
|
||||||
|
procedure SetIdentifier(const AValue: string);
|
||||||
procedure SetInSession(const AValue: boolean);
|
procedure SetInSession(const AValue: boolean);
|
||||||
|
procedure OnItemChanged(Sender: TObject);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
procedure Clear;
|
||||||
|
function Equals(Src: TProjectBuildMode): boolean; reintroduce;
|
||||||
|
procedure Assign(Src: TProjectBuildMode); reintroduce;
|
||||||
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
procedure LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string);
|
||||||
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string;
|
||||||
ClearModified: boolean = true);
|
ClearModified: boolean = true);
|
||||||
property Identifier: string read FIdentifier;// arbitrary string
|
property ChangeStamp: int64 read FChangeStamp;
|
||||||
|
procedure IncreaseChangeStamp;
|
||||||
|
procedure AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
procedure RemoveOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
public
|
||||||
|
property InSession: boolean read FInSession write SetInSession;
|
||||||
|
property Identifier: string read FIdentifier write SetIdentifier;// arbitrary string
|
||||||
|
|
||||||
|
// copied by Assign, compared by Equals, cleared by Clear
|
||||||
property CompilerOptions: TProjectCompilerOptions read FCompilerOptions;
|
property CompilerOptions: TProjectCompilerOptions read FCompilerOptions;
|
||||||
property BuildMacroValues: TProjectBuildMacros read FBuildMacroValues;
|
property BuildMacroValues: TProjectBuildMacros read FBuildMacroValues;
|
||||||
property InSession: boolean read FInSession write SetInSession;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectBuildModes }
|
{ TProjectBuildModes }
|
||||||
|
|
||||||
TProjectBuildModes = class(TComponent)
|
TProjectBuildModes = class(TComponent)
|
||||||
private
|
private
|
||||||
FActive: TProjectBuildMode;
|
|
||||||
FChangeStamp: integer;
|
FChangeStamp: integer;
|
||||||
fItems: TFPList;
|
fItems: TFPList;
|
||||||
|
fOnChanged: TMethodList;
|
||||||
function GetItems(Index: integer): TProjectBuildMode;
|
function GetItems(Index: integer): TProjectBuildMode;
|
||||||
procedure SetActive(const AValue: TProjectBuildMode);
|
procedure OnItemChanged(Sender: TObject);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -666,7 +684,8 @@ type
|
|||||||
property Items[Index: integer]: TProjectBuildMode read GetItems; default;
|
property Items[Index: integer]: TProjectBuildMode read GetItems; default;
|
||||||
property ChangeStamp: integer read FChangeStamp;
|
property ChangeStamp: integer read FChangeStamp;
|
||||||
procedure IncreaseChangeStamp;
|
procedure IncreaseChangeStamp;
|
||||||
property Active: TProjectBuildMode read FActive write SetActive;
|
procedure AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
procedure RemoveOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProject }
|
{ TProject }
|
||||||
@ -6304,12 +6323,14 @@ begin
|
|||||||
FItems:=TStringList.Create;
|
FItems:=TStringList.Create;
|
||||||
FCfgVars:=TCTCfgScriptVariables.Create;
|
FCfgVars:=TCTCfgScriptVariables.Create;
|
||||||
FChangeStamp:=CTInvalidChangeStamp;
|
FChangeStamp:=CTInvalidChangeStamp;
|
||||||
|
fOnChanged:=TMethodList.Create;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TProjectBuildMacros.Destroy;
|
destructor TProjectBuildMacros.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FItems);
|
FreeAndNil(FItems);
|
||||||
FreeAndNil(FCfgVars);
|
FreeAndNil(FCfgVars);
|
||||||
|
FreeAndNil(fOnChanged);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -6388,6 +6409,7 @@ end;
|
|||||||
procedure TProjectBuildMacros.IncreaseChangeStamp;
|
procedure TProjectBuildMacros.IncreaseChangeStamp;
|
||||||
begin
|
begin
|
||||||
CTIncreaseChangeStamp(FChangeStamp);
|
CTIncreaseChangeStamp(FChangeStamp);
|
||||||
|
if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectBuildMacros.LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
procedure TProjectBuildMacros.LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||||
@ -6437,6 +6459,17 @@ begin
|
|||||||
Modified:=false;
|
Modified:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMacros.AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
fOnChanged.Add(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMacros.RemoveOnChangedHandler(const Handler: TNotifyEvent
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
fOnChanged.Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
{ TProjectBuildMode }
|
{ TProjectBuildMode }
|
||||||
|
|
||||||
procedure TProjectBuildMode.SetInSession(const AValue: boolean);
|
procedure TProjectBuildMode.SetInSession(const AValue: boolean);
|
||||||
@ -6445,20 +6478,56 @@ begin
|
|||||||
FInSession:=AValue;
|
FInSession:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.OnItemChanged(Sender: TObject);
|
||||||
|
begin
|
||||||
|
IncreaseChangeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.SetIdentifier(const AValue: string);
|
||||||
|
begin
|
||||||
|
if FIdentifier=AValue then exit;
|
||||||
|
FIdentifier:=AValue;
|
||||||
|
IncreaseChangeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TProjectBuildMode.Create(AOwner: TComponent);
|
constructor TProjectBuildMode.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
|
fOnChanged:=TMethodList.Create;
|
||||||
|
FChangeStamp:=CTInvalidChangeStamp64;
|
||||||
FBuildMacroValues:=TProjectBuildMacros.Create;
|
FBuildMacroValues:=TProjectBuildMacros.Create;
|
||||||
|
FBuildMacroValues.AddOnChangedHandler(@OnItemChanged);
|
||||||
FCompilerOptions:=TProjectCompilerOptions.Create(Self);
|
FCompilerOptions:=TProjectCompilerOptions.Create(Self);
|
||||||
|
FCompilerOptions.AddOnChangedHandler(@OnItemChanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TProjectBuildMode.Destroy;
|
destructor TProjectBuildMode.Destroy;
|
||||||
begin
|
begin
|
||||||
|
FreeAndNil(fOnChanged);
|
||||||
FreeAndNil(FCompilerOptions);
|
FreeAndNil(FCompilerOptions);
|
||||||
FreeAndNil(FBuildMacroValues);
|
FreeAndNil(FBuildMacroValues);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.Clear;
|
||||||
|
begin
|
||||||
|
CompilerOptions.Clear;
|
||||||
|
BuildMacroValues.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TProjectBuildMode.Equals(Src: TProjectBuildMode): boolean;
|
||||||
|
begin
|
||||||
|
Result:=CompilerOptions.CreateDiff(Src.CompilerOptions)
|
||||||
|
and BuildMacroValues.Equals(Src.BuildMacroValues);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.Assign(Src: TProjectBuildMode);
|
||||||
|
begin
|
||||||
|
if Equals(Src) then exit;
|
||||||
|
CompilerOptions.Assign(Src.CompilerOptions);
|
||||||
|
BuildMacroValues.Assign(Src.BuildMacroValues);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TProjectBuildMode.LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
procedure TProjectBuildMode.LoadFromXMLConfig(XMLConfig: TXMLConfig;
|
||||||
const Path: string);
|
const Path: string);
|
||||||
begin
|
begin
|
||||||
@ -6475,6 +6544,23 @@ begin
|
|||||||
FCompilerOptions.SaveToXMLConfig(XMLConfig,Path+'CompilerOptions/');
|
FCompilerOptions.SaveToXMLConfig(XMLConfig,Path+'CompilerOptions/');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.IncreaseChangeStamp;
|
||||||
|
begin
|
||||||
|
CTIncreaseChangeStamp64(FChangeStamp);
|
||||||
|
if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
fOnChanged.Add(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildMode.RemoveOnChangedHandler(const Handler: TNotifyEvent
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
fOnChanged.Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
{ TProjectBuildModes }
|
{ TProjectBuildModes }
|
||||||
|
|
||||||
function TProjectBuildModes.GetItems(Index: integer): TProjectBuildMode;
|
function TProjectBuildModes.GetItems(Index: integer): TProjectBuildMode;
|
||||||
@ -6482,22 +6568,22 @@ begin
|
|||||||
Result:=TProjectBuildMode(fItems[Index]);
|
Result:=TProjectBuildMode(fItems[Index]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectBuildModes.SetActive(const AValue: TProjectBuildMode);
|
procedure TProjectBuildModes.OnItemChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if FActive=AValue then exit;
|
|
||||||
FActive:=AValue;
|
|
||||||
IncreaseChangeStamp;
|
IncreaseChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TProjectBuildModes.Create(AOwner: TComponent);
|
constructor TProjectBuildModes.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
|
fOnChanged:=TMethodList.Create;
|
||||||
fItems:=TFPList.Create;
|
fItems:=TFPList.Create;
|
||||||
FChangeStamp:=CTInvalidChangeStamp;
|
FChangeStamp:=CTInvalidChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TProjectBuildModes.Destroy;
|
destructor TProjectBuildModes.Destroy;
|
||||||
begin
|
begin
|
||||||
|
FreeAndNil(fOnChanged);
|
||||||
Clear;
|
Clear;
|
||||||
FreeAndNil(fItems);
|
FreeAndNil(fItems);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
@ -6530,6 +6616,7 @@ function TProjectBuildModes.Add(Identifier: string): TProjectBuildMode;
|
|||||||
begin
|
begin
|
||||||
Result:=TProjectBuildMode.Create(Self);
|
Result:=TProjectBuildMode.Create(Self);
|
||||||
Result.FIdentifier:=Identifier;
|
Result.FIdentifier:=Identifier;
|
||||||
|
Result.AddOnChangedHandler(@OnItemChanged);
|
||||||
fItems.Add(Result);
|
fItems.Add(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -6541,6 +6628,18 @@ end;
|
|||||||
procedure TProjectBuildModes.IncreaseChangeStamp;
|
procedure TProjectBuildModes.IncreaseChangeStamp;
|
||||||
begin
|
begin
|
||||||
CTIncreaseChangeStamp(FChangeStamp);
|
CTIncreaseChangeStamp(FChangeStamp);
|
||||||
|
if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildModes.AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
fOnChanged.Add(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectBuildModes.RemoveOnChangedHandler(const Handler: TNotifyEvent
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
fOnChanged.Remove(TMethod(Handler));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -185,6 +185,7 @@ type
|
|||||||
protected
|
protected
|
||||||
FChangeStamp: int64;
|
FChangeStamp: int64;
|
||||||
FSavedChangeStamp: int64;
|
FSavedChangeStamp: int64;
|
||||||
|
fOnChanged: TMethodList;
|
||||||
|
|
||||||
// Paths:
|
// Paths:
|
||||||
|
|
||||||
@ -296,6 +297,7 @@ type
|
|||||||
procedure SetUnitPaths(const AValue: String); virtual; abstract;
|
procedure SetUnitPaths(const AValue: String); virtual; abstract;
|
||||||
public
|
public
|
||||||
constructor Create(const TheOwner: TObject); virtual;
|
constructor Create(const TheOwner: TObject); virtual;
|
||||||
|
destructor Destroy; override;
|
||||||
function IsActive: boolean; virtual;
|
function IsActive: boolean; virtual;
|
||||||
public
|
public
|
||||||
property Owner: TObject read fOwner write fOwner;
|
property Owner: TObject read fOwner write fOwner;
|
||||||
@ -304,6 +306,8 @@ type
|
|||||||
property ChangeStamp: int64 read FChangeStamp;
|
property ChangeStamp: int64 read FChangeStamp;
|
||||||
procedure IncreaseChangeStamp;
|
procedure IncreaseChangeStamp;
|
||||||
class function InvalidChangeStamp: int64;
|
class function InvalidChangeStamp: int64;
|
||||||
|
procedure AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
procedure RemoveOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
|
||||||
// search paths:
|
// search paths:
|
||||||
property IncludePath: String read GetIncludePaths write SetIncludePaths;
|
property IncludePath: String read GetIncludePaths write SetIncludePaths;
|
||||||
@ -1826,10 +1830,17 @@ end;
|
|||||||
constructor TLazCompilerOptions.Create(const TheOwner: TObject);
|
constructor TLazCompilerOptions.Create(const TheOwner: TObject);
|
||||||
begin
|
begin
|
||||||
inherited Create;
|
inherited Create;
|
||||||
|
fOnChanged:=TMethodList.Create;
|
||||||
FChangeStamp:=InvalidChangeStamp;
|
FChangeStamp:=InvalidChangeStamp;
|
||||||
FOwner := TheOwner;
|
FOwner := TheOwner;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TLazCompilerOptions.Destroy;
|
||||||
|
begin
|
||||||
|
FreeAndNil(fOnChanged);
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazCompilerOptions.IsActive: boolean;
|
function TLazCompilerOptions.IsActive: boolean;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
@ -1841,6 +1852,7 @@ begin
|
|||||||
inc(fChangeStamp)
|
inc(fChangeStamp)
|
||||||
else
|
else
|
||||||
fChangeStamp:=Low(int64)+1;
|
fChangeStamp:=Low(int64)+1;
|
||||||
|
if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TLazCompilerOptions.InvalidChangeStamp: int64;
|
class function TLazCompilerOptions.InvalidChangeStamp: int64;
|
||||||
@ -1848,6 +1860,17 @@ begin
|
|||||||
Result:=Low(int64);
|
Result:=Low(int64);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLazCompilerOptions.AddOnChangedHandler(const Handler: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
fOnChanged.Add(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLazCompilerOptions.RemoveOnChangedHandler(const Handler: TNotifyEvent
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
fOnChanged.Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
{ TNewItemProjectFile }
|
{ TNewItemProjectFile }
|
||||||
|
|
||||||
function TNewItemProjectFile.LocalizedName: string;
|
function TNewItemProjectFile.LocalizedName: string;
|
||||||
|
Loading…
Reference in New Issue
Block a user