, . , . . ToolsAPI , .
, ToolsAPI, . , .
, , . , , API , , .
, , , . , uMyComp.pas, , . . uMyComp.pas ToolsAPI. , uMyCompReg.pas , , ToolsAPI. , uMyCompReg.pas uMyComp.pas. , , , uMyComp.pas.
, . , . , DESIGNTIME. uMyComp.pas, . , , DESIGNTIME. , uMyComp.pas, DESIGNTIME .
, , , . , , , , .
ToolsAPI ? :
procedure TMyObject.LoadModel(fileName: string);
begin
if csDesigning in ComponentState then
Model.LoadFromFile(IncludeTrailingPathDelimiter(
ExtractFilePath(GetActiveProject.FileName))+'Obj\'+filename)
else
Model.LoadFromFile(IncludeTrailingPathDelimiter(
ExtractFilePath(ParamStr(0)))+'Obj\'+filename);
end;
, . , , - , LoadFromFile . , . :
procedure TMyObject.LoadModel(fileName: string);
var
ModelDir: string;
begin
if csDesigning in ComponentState then
ModelDir := ExtractFilePath(GetActiveProject.FileName)
else
ModelDir := ExtractFilePath(ParamStr(0));
Model.LoadFromFile(IncludeTrailingPathDelimiter(ModelDir)+'Obj\'+filename);
end;
, GetActiveProject.FileName . (DI). - . TMyObject . DI , , , . , :
type
TMyObject = class(...)
...
public
class var GetModelDir: TFunc<string>;
end;
, , , . LoadModel :
procedure TMyObject.LoadModel(fileName: string);
var
ModelDir: string;
begin
if Assigned(GetModelDir) then
ModelDir := GetModelDir()
else
ModelDir := ExtractFilePath(ParamStr(0));
Model.LoadFromFile(IncludeTrailingPathDelimiter(ModelDir)+'Obj\'+filename);
end;
. - , GetModelDir . , . . :
initialization
TMyObject.GetModelDir :=
function: string
begin
Result := GetActiveProject.FileName;
end;
, Delphi.