Я новичок в создании компонентов и экспериментировал с созданием некоторых собственных собственных производных компонентов, используя стандартный выпуск VCL из Delphi.Создание компонента - Объединение компонентов вместе?
Я думал, что смогу объединить два компонента вместе, чтобы создать один единственный. Возьмите ниже того, что я до сих пор, идея заключается в том, чтобы положить TImage внутри TScrollBox:
unit MyComponent;
interface
uses
Windows,
Classes,
Controls,
Forms,
ExtCtrls;
type
TMyPanel = class(TScrollBox)
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TMyPanel]);
end;
{ TMyPanel }
constructor TMyPanel.Create(AOwner: TComponent);
var
AImage: TImage;
begin
inherited Create(AOwner);
AImage := TImage.Create(AOwner);
AImage.Align := alClient;
AImage.Parent := Self;
end;
destructor TMyPanel.Destroy;
begin
inherited;
end;
end.
Если я скомпилировать и установить выше в пакет, то результат, как показано ниже:
Проблема
Я хочу, чтобы мой компонент регистрировался как один компонент. Но компонент должен быть комбинацией как TScrollBox, так и TImage. Основным компонентом будет TScrollBox, но теперь он должен иметь доступ к свойствам и событиям и т. Д. TImage.
Например, TMyPanel может разделить свойства TImage и TScrollBox вместе:
- Авторазмер
- BorderStyle
- HorzScrollBar
- ParentBackground
- Изображение
- VertScrollBar
Я думаю, что было бы излишним полностью написать новый компонент, чтобы выполнить описанное выше поведение, и я действительно не знаю, с чего начать. Если это можно сделать, вы можете создать несколько интересных компонентов, которые объединены в один, но сохраните исходные свойства, методы и события и т. Д.
Это то, чего я хочу достичь здесь с помощью TImage внутри TScrollBox.
Решение
Ответа проявленных Уве Рааб работает, как ожидалось. TImage теперь зарегистрирован внутри TScrollBox, но отображается как один компонент. Свойства TImage показаны в Object Inspector как изображение. > Который раскроет свойства TImage :)
Обратите внимание, что вы должны предоставить 'Self', как владелец подкомпонента. Использование того же владельца, что и у TMyPanel, приведет к проблемам с загрязнением и потоками DFM. – NGLN
Действительно, вы все еще не поняли. См. Мой обновленный ответ. –
+1 спасибо вам за показ примера. –