Есть TPresentedScrollBox с AutoCalculateContentSize:=False и ContentSize.Height:=10000 ContentSize.Width:=10000 и свой компонент наследник TRectangle в котором перекрыт ParentChanged
procedure TMyComponent.ParentChanged;
var
str: string;
begin
inherited ParentChanged;
if Assigned(Self.Parent) then
begin
Self.Position.X:=Self.ParentControl.Position.X+Self.ParentControl.Padding.Left;
Self.Position.Y:=Self.ParentControl.Position.Y+Self.ParentControl.Padding.Top;
str:=Parent.ClassName;
if (Parent is TScrollContent) then
begin
Self.Width:=(Parent as TScrollContent).Width-Self.ParentControl.Padding.Right;
Self.Height:=(Parent as TScrollContent).Height-Self.ParentControl.Padding.Bottom;
end
else
begin
Self.Width:=Self.ParentControl.Width-Self.ParentControl.Padding.Right;
Self.Height:=Self.ParentControl.Height-Self.ParentControl.Padding.Bottom;
end;
Self.RecalcAbsolute;
end;
end;
Проблема в том, что в переменной str получаю 'TScrollContent', однако (Parent is TScrollContent) почему то всегда False и строки
Self.Width:=(Parent as TScrollContent).Width-Self.ParentControl.Padding.Right;
Self.Height:=(Parent as TScrollContent).Height-Self.ParentControl.Padding.Bottom;
никогда не выполняются.
Приведение типов в лоб без условия дает ошибку 'Invalid class typecast'
Как вписать в этот TScrollContent размером (0, 0, 10000, 10000) TRectangle?
Вопрос
Zyablik3000
Здравствуйте!
Есть TPresentedScrollBox с AutoCalculateContentSize:=False и ContentSize.Height:=10000 ContentSize.Width:=10000 и свой компонент наследник TRectangle в котором перекрыт ParentChanged
procedure TMyComponent.ParentChanged; var str: string; begin inherited ParentChanged; if Assigned(Self.Parent) then begin Self.Position.X:=Self.ParentControl.Position.X+Self.ParentControl.Padding.Left; Self.Position.Y:=Self.ParentControl.Position.Y+Self.ParentControl.Padding.Top; str:=Parent.ClassName; if (Parent is TScrollContent) then begin Self.Width:=(Parent as TScrollContent).Width-Self.ParentControl.Padding.Right; Self.Height:=(Parent as TScrollContent).Height-Self.ParentControl.Padding.Bottom; end else begin Self.Width:=Self.ParentControl.Width-Self.ParentControl.Padding.Right; Self.Height:=Self.ParentControl.Height-Self.ParentControl.Padding.Bottom; end; Self.RecalcAbsolute; end; end;
Проблема в том, что в переменной str получаю 'TScrollContent', однако (Parent is TScrollContent) почему то всегда False и строки
Self.Width:=(Parent as TScrollContent).Width-Self.ParentControl.Padding.Right; Self.Height:=(Parent as TScrollContent).Height-Self.ParentControl.Padding.Bottom;
никогда не выполняются.
Приведение типов в лоб без условия дает ошибку 'Invalid class typecast'
Как вписать в этот TScrollContent размером (0, 0, 10000, 10000) TRectangle?
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.