Форум: "Компоненты";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизКак сделать один компонент частью другого? Найти похожие ветки
← →
GrayFace © (2004-06-21 11:02) [0]Чтобы редактировался в Property Editor"е, как, например, ScrollBar. В ComponentState есть такое свойство, только ComponentState - ReadOnly property.
← →
Некто (2004-06-22 15:53) [1]1. В компоненте-контейнере сделать publised свойство со ссылкой на вложенный компонент.
2. Написать редактор этого свойства, отнаследовав его от TClassProperty.
← →
GrayFace © (2004-06-22 17:37) [2]Нет. Как-то можно легче. Как со скроллбарами: жмешь на плюс и видишь содержимое внутреннего компонента.
← →
Mim1 © (2004-06-22 18:01) [3]TControlScrollBar - наследник TPersistent, как и TFont и т.п. Для наследников этого класса в инспекторе обьектов свойства разварачиваются.
Наследники же TCOntrol сохраняются в поток в качестве ссылки.
← →
Некто (2004-06-23 14:20) [4]> GrayFace © (22.06.04 17:37) [2]
> жмешь на плюс и видишь содержимое внутреннего компонента.
Не компонента, а объекта, НЕ являющегося компонентом. То есть, потомка TPersistent, но не TComponent.
Это происходит потому, что для таких объектов редактором по умолчанию является TClassProperty - вот он-то и дает тот самый раскрывающийся плюсик и список подсвойств. А для компонентов редактором по умолчанию является TComponentProperty, который никаких плюсиков не дает, а дает комбобокс со списком лежащих на форме компонентов, подходящих по классу свойства.
Вы же хотите, чтобы плюсик и список подсвойств появлялся именно у компонентского свойства - значит, Вам нужно заменить для этого свойства один стандартный редактор другим.
О чем и было сказано. И вряд ли стоит спешить с категоричными "нет" - полезнее было бы сначала разобраться в сути вопроса.
Впрочем, дело хозяйское.
← →
GrayFace © (2004-06-27 06:24) [5]А как это сделать? И еще, как менять меню, которое выскакивает при клике по компоненту правой кнопкой?
← →
Mim1 © (2004-06-28 12:07) [6]
> [5] GrayFace © (27.06.04 06:24)
> А как это сделать?
создаеш наследник tpersistent и в путь
> И еще, как менять меню, которое выскакивает при клике по
> компоненту правой кнопкой?unit CkgComponent;
interface
uses
Classes;
type
TCkgComponent = class(TComponent)
public
published
end;
Procedure Register;
implementation
uses CkgCompEditor, DesignIntf;
Procedure Register;
begin
RegisterComponentEditor(TCkgComponent, TCkgComponentEditor);
end;
end.
unit CkgCompEditor;
interface
uses
DesignEditors;
type
TCkgComponentEditor = class(TDefaultEditor)
public
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
implementation
uses QDialogs, CkgConst;
{ TCkgComponentEditor }
procedure TCkgComponentEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0 : ShowMessage("Доброе утро страна!"+lb+"Mim");
end;
end;
function TCkgComponentEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := "Нажми меня :).";
end;
end;
function TCkgComponentEditor.GetVerbCount: Integer;
begin
Result := 1;
end;
end.
← →
GrayFace © (2004-06-29 07:18) [7]>заменить для этого свойства один стандартный редактор другим
Как это сделать?
← →
Юрий Зотов © (2004-06-29 13:30) [8]GrayFace © (29.06.04 07:18) [7]
>> заменить для этого свойства один стандартный редактор другим
> Как это сделать?
Просто добавить в процедуру Register одну-единственную строчку - вызов RegisterPropertyEditor. Вот полный, работающий пример.
uses
Classes,
DesignIntf, DesignEditors; // Это для D6 и выше.
// DsgnIntf; // А это для для D5 и ниже.
type
TMyComponent = class(TComponent)
private
FComp: TComponent;
procedure SetComp(const Value: TComponent);
public
constructor Create(AOwner: TComponent); override;
published
property Comp: TComponent read FComp write SetComp;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Samples", [TMyComponent]);
RegisterPropertyEditor(TComponent.ClassInfo, TMyComponent, "Comp", TClassProperty)
end;
{ TMyComponent }
constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited;
FComp := TComponent.Create(Self)
end;
procedure TMyComponent.SetComp(const Value: TComponent);
begin
FComp.Assign(Value)
end;
← →
GrayFace © (2004-07-10 11:40) [9]Если подключаю DesignEditors(в нем описана TClassProperty), Делфя 7 ругается, что нету proxies.pas
← →
Mim1 © (2004-07-10 14:16) [10]
> [9] GrayFace © (10.07.04 11:40)
> Если подключаю DesignEditors(в нем описана TClassProperty),
> Делфя 7 ругается, что нету proxies.pas
Вам сюда http://delphimaster.net/view/15-1089200045/
← →
GrayFace © (2004-07-11 13:38) [11]Спасибо.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.032 c