function CreateControl(AClassName:string; AParent:TWinControl):TWinControl;
begin
Result:=FindClass(AClassName).Create as TWinControl;
Result.Parent:=AParent;
end;
на
Result.Parent:=AParent — Access Violation.
Что не так и как в данном случае правильно сделать?
Здравствуйте, bivis, Вы писали:
B>B>function CreateControl(AClassName:string; AParent:TWinControl):TWinControl;
B>begin
B> Result:=FindClass(AClassName).Create as TWinControl;
B> Result.Parent:=AParent;
B>end;
B>
Ошибка в том, что для потомков TComponent необходимо вызывать конструктор TComponent.Create(AOwner: TComponent); Поэтому, может помочь следующее:
function CreateControl(AClassName:string; AParent:TWinControl):TWinControl;
begin
Result:=TWinControlClass(FindClass(AClassName)).Create(AParent);
Result.Parent:=AParent;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Btn: TButton;
begin
RegisterClass(TButton);
Btn := CreateControl('TButton', Self) as TButton;
Btn.Caption := '!!!!!!!!!';
Btn.Visible := True;
end;
... << RSDN@Home 1.1 beta 2 >>
M>Ошибка в том, что для потомков TComponent необходимо вызывать конструктор TComponent.Create(AOwner: TComponent); Поэтому, может помочь следующее:
M>[pascal]
M>function CreateControl(AClassName:string; AParent:TWinControl):TWinControl;
M>begin
M> Result:=TWinControlClass(FindClass(AClassName)).Create(AParent);
M> Result.Parent:=AParent;
M>end;
дадада, точно! работает, пасиба