IDE: designer: creating components: set csInline before calling Create

git-svn-id: trunk@15682 -
This commit is contained in:
mattias 2008-07-06 12:22:03 +00:00
parent 06eebec281
commit 7d22d4856a
2 changed files with 17 additions and 0 deletions

View File

@ -264,6 +264,7 @@ each control that's dropped onto the form
function DesignerBaseClassCount: Integer; override;
procedure UnregisterDesignerBaseClass(AClass: TComponentClass); override;
function IndexOfDesignerBaseClass(AClass: TComponentClass): integer; override;
function DescendFromDesignerBaseClass(AClass: TComponentClass): integer; override;
function FindDesignerBaseClassByName(const AClassName: shortstring; WithDefaults: boolean): TComponentClass; override;
// define properties
@ -1510,6 +1511,12 @@ begin
try
NewComponent := TComponent(TypeClass.newinstance);
SetComponentDesignMode(NewComponent,true);
if DescendFromDesignerBaseClass(TypeClass)>=0 then begin
// this class can have its own lfm streams (e.g. a TFrame)
// => set csInline
DebugLn(['TCustomFormEditor.CreateComponent Inline ',DbgSName(TypeClass)]);
SetComponentInlineMode(NewComponent,true);
end;
NewComponent.Create(OwnerComponent);
except
on e: Exception do begin
@ -1856,6 +1863,15 @@ begin
Result:=FDesignerBaseClasses.IndexOf(AClass);
end;
function TCustomFormEditor.DescendFromDesignerBaseClass(AClass: TComponentClass
): integer;
begin
Result:=FDesignerBaseClasses.Count-1;
while (Result>=0)
and (not AClass.InheritsFrom(TClass(FDesignerBaseClasses[Result]))) do
dec(Result);
end;
function TCustomFormEditor.FindDesignerBaseClassByName(
const AClassName: shortstring; WithDefaults: boolean): TComponentClass;
var

View File

@ -127,6 +127,7 @@ type
property DesignerBaseClasses[Index: integer]: TComponentClass read GetDesignerBaseClasses;
procedure UnregisterDesignerBaseClass(AClass: TComponentClass); virtual; abstract;
function IndexOfDesignerBaseClass(AClass: TComponentClass): integer; virtual; abstract;
function DescendFromDesignerBaseClass(AClass: TComponentClass): integer; virtual; abstract;
function FindDesignerBaseClassByName(const AClassName: shortstring; WithDefaults: boolean): TComponentClass; virtual; abstract;
// designers