IDE: adding frame to form: adding published var, unit and package

git-svn-id: trunk@15692 -
This commit is contained in:
mattias 2008-07-07 11:02:58 +00:00
parent 30a2dc2ee2
commit 085ddbcdac
4 changed files with 37 additions and 18 deletions

View File

@ -2310,7 +2310,7 @@ begin
AnUnitInfo:=AnUnitInfo.NextUnitWithComponent;
end;
end;
DebugLn(['TCustomFormEditor.JITListFindClass Searched=',ComponentClassName,' Found=',DbgSName(ComponentClass)]);
//DebugLn(['TCustomFormEditor.JITListFindClass Searched=',ComponentClassName,' Found=',DbgSName(ComponentClass)]);
end;
function TCustomFormEditor.GetDesignerBaseClasses(Index: integer

View File

@ -14063,6 +14063,7 @@ var
ActiveUnitInfo: TUnitInfo;
Ancestor: TComponent;
ComponentClassNames: TStringList;
ClassUnitInfo: TUnitInfo;
begin
DebugLn('TMainIDE.OnPropHookPersistentAdded A ',dbgsName(APersistent));
ADesigner:=nil;
@ -14072,9 +14073,12 @@ begin
AComponent:=nil;
RegComp:=IDEComponentPalette.FindComponent(APersistent.ClassName);
if (RegComp=nil) and (AComponent<>nil) then begin
DebugLn('TMainIDE.OnPropHookPersistentAdded ',APersistent.ClassName,
' not registered');
exit;
ClassUnitInfo:=Project1.UnitWithComponentClass(TComponentClass(APersistent.ClassType));
if ClassUnitInfo=nil then begin
DebugLn('TMainIDE.OnPropHookPersistentAdded ',APersistent.ClassName,
' not registered');
exit;
end;
end;
if AComponent<>nil then begin
// create unique name
@ -14091,7 +14095,7 @@ begin
ADesigner:=FindRootDesigner(AComponent) as TDesigner;
end;
if RegComp<>nil then begin
if (RegComp<>nil) or (ClassUnitInfo<>nil) then begin
if not BeginCodeTool(ADesigner,ActiveSrcEdit,ActiveUnitInfo,
[ctfSwitchToFormSource])
then exit;

View File

@ -715,6 +715,7 @@ type
function UnitWithEditorIndex(Index:integer): TUnitInfo;
function UnitWithComponent(AComponent: TComponent): TUnitInfo;
function UnitWithComponentClass(AClass: TComponentClass): TUnitInfo;
function UnitWithComponentClassName(const AClassName: string): TUnitInfo;
function UnitWithComponentName(AComponentName: String): TUnitInfo;
function UnitComponentInheritingFrom(AClass: TComponentClass;
Ignore: TUnitInfo): TUnitInfo;
@ -4172,6 +4173,15 @@ begin
Result:=Result.fNext[uilWithComponent];
end;
function TProject.UnitWithComponentClassName(const AClassName: string
): TUnitInfo;
begin
Result := fFirst[uilWithComponent];
while (Result<>nil)
and (SysUtils.CompareText(Result.Component.ClassName, AClassName) <> 0) do
Result := Result.fNext[uilWithComponent];
end;
function TProject.UnitWithComponentName(AComponentName: String): TUnitInfo;
begin
Result := fFirst[uilPartOfProject];

View File

@ -2860,29 +2860,34 @@ var
RegComp: TRegisteredComponent;
NewUnitName: String;
PkgFile: TPkgFile;
ClassUnitInfo: TUnitInfo;
begin
for i:=0 to ComponentClassnames.Count-1 do begin
//DebugLn(['CollectNeededUnitnamesAndPackages ComponentClassnames[i]=',ComponentClassnames[i]]);
RegComp:=IDEComponentPalette.FindComponent(ComponentClassnames[i]);
NewUnitName:='';
if (RegComp<>nil) then begin
NewUnitName:='';
if RegComp.ComponentClass<>nil then
NewUnitName:=GetClassUnitName(RegComp.ComponentClass);
//DebugLn(['CollectNeededUnitnamesAndPackages AAA1 NewUnitName=',NewUnitName]);
if NewUnitName='' then
NewUnitName:=RegComp.GetUnitName;
if (NewUnitName<>'') and (UnitNames.IndexOf(NewUnitName)<0) then begin
// new needed unit
UnitNames.Add(NewUnitName);
// find package
PkgFile:=PackageGraph.FindUnitInAllPackages(NewUnitName,true);
//DebugLn(['CollectNeededUnitnamesAndPackages AAA2 PkgFile=',PkgFile<>nil]);
if (PkgFile=nil) and (RegComp is TPkgComponent) then begin
PkgFile:=TPkgComponent(RegComp).PkgFile;
if (PkgFile<>nil) and (PkgFile.LazPackage<>nil)
and (Packages.IndexOf(PkgFile.LazPackage)<0) then
Packages.Add(PkgFile.LazPackage);
end;
end else begin
ClassUnitInfo:=Project1.UnitWithComponentClassName(ComponentClassnames[i]);
if ClassUnitInfo<>nil then
NewUnitName:=ClassUnitInfo.UnitName;
end;
if (NewUnitName<>'') and (UnitNames.IndexOf(NewUnitName)<0) then begin
// new needed unit
UnitNames.Add(NewUnitName);
// find package
PkgFile:=PackageGraph.FindUnitInAllPackages(NewUnitName,true);
//DebugLn(['CollectNeededUnitnamesAndPackages AAA2 PkgFile=',PkgFile<>nil]);
if (PkgFile=nil) and (RegComp is TPkgComponent) then begin
PkgFile:=TPkgComponent(RegComp).PkgFile;
if (PkgFile<>nil) and (PkgFile.LazPackage<>nil)
and (Packages.IndexOf(PkgFile.LazPackage)<0) then
Packages.Add(PkgFile.LazPackage);
end;
end;
end;