mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 15:48:03 +02:00
IDE: designer: creating components: set csInline before calling Create
git-svn-id: trunk@15682 -
This commit is contained in:
parent
06eebec281
commit
7d22d4856a
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user