Форум: "Компоненты";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
ВнизРедакторы компонент Найти похожие ветки
← →
DimaBr (2005-10-25 12:07) [0]Здравствуйте !
Пишу TComboBox + TStoredProc, где TStoredProc - субкомпонент. Нужно вывести на поверхность Field Editors. Как это сделать ?
← →
Юрий Зотов © (2005-10-26 05:01) [1]Ни в TComboBox, ни в TStoredProc никаких полей обнаружить не удалось. Поэтому при чем тут редактор полей - пока что непонятно. Видимо, есть смысл уточнить вопрос.
← →
DimaBr (2005-10-26 10:46) [2]Fields Editor - редактор компонента TStoredProc (очепяточка вышла). Помогите вынести его на поверхность ComboBox.
← →
Priest © (2005-10-26 16:29) [3]Поищи здесь по форуму....Я задавал вопрос как вызвать редактор коллекции....Вот часть ветки
Юрий Зотов © (05.07.05 18:26) [2]
> Priest (05.07.05 18:03) [1]
А вот так можно вызвать редактор ЛЮБОГО свойства, не только коллекции (в данном примере это объектное свойство MyItems класса TMyComp).
type
TMyCompEditor = class(TComponentEditor)
private
FPropInfo: PPropInfo;
FPropEdit: IProperty;
procedure GetPropProc(const PropEdit: IProperty);
public
constructor Create(AComponent: TComponent; ADesigner: IDesigner); override;
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
{ TMyCompEditor }
constructor TMyCompEditor.Create(AComponent: TComponent; ADesigner: IDesigner);
begin
inherited;
FPropInfo := GetPropInfo(GetComponent.ClassInfo, "MyItems", [tkClass])
end;
procedure TMyCompEditor.ExecuteVerb(Index: Integer);
var
Selections: TDesignerSelections;
begin
if Index = GetVerbCount - 1 then
begin
if (FPropEdit = nil) and (FPropInfo <> nil) then
begin
Selections := TDesignerSelections.Create;
try
Designer.GetSelections(Selections);
GetComponentProperties(Selections, [tkClass], Designer, GetPropProc)
finally
Selections.Free
end
end;
if FPropEdit <> nil then
FPropEdit.Edit
end
else
inherited
end;
procedure TMyCompEditor.GetPropProc(const PropEdit: IProperty);
begin
if PropEdit.GetPropInfo = FPropInfo then
FPropEdit := PropEdit
end;
function TMyCompEditor.GetVerb(Index: Integer): string;
begin
if Index = GetVerbCount - 1 then
Result := "MyItems Editor..."
else
Result := inherited GetVerb(Index)
end;
function TMyCompEditor.GetVerbCount: Integer;
begin
Result := inherited GetVerbCount + 1
end;
← →
Юрий Зотов © (2005-10-27 03:39) [4]> Priest © (26.10.05 16:29) [3]
Тут другая задача. Там нужно было приспособить редактор свойства в качестве пункта меню редактора компонента, а здесь нужно приспособить редактор одного компонента к другому компоненту.
> DimaBr (26.10.05 10:46) [2]
Редактор компонента TStoredProc - все же не Fields Editor, а TStoredProcEditor (см. BDEReg.pas). Fields Editor - это лишь один из пунктов его меню.
Значит, пишем свой редактор компонента по аналогии с TStoredProcEditor, и регистрируем его для нашего компонента. Естественно, работать он должен с субкомпонентом.
← →
DimaBr (2005-10-27 08:52) [5]To Юрий Зотов.
Я так и пытался делать, но подключение модуля BDEReg.pas произвести не удаётся, поскольку ругается на отсутствие Report.dcu. Модет он уже скомпилирован в каком-нибудь пакете ?
← →
Priest © (2005-10-27 11:26) [6]>>DimaBr
А ты редактор компонента билдишь с пакетами?
← →
DimaBr (2005-10-27 15:47) [7]Priest © (27.10.05 11:26) [6]
Нет, конечно.
← →
Priest © (2005-10-27 17:49) [8]Поэтому и не находит. Надо с поддержкой пакетов. А чтобы твой компонент не требовал пакетов, редактор компонента нужно в отдельном пакете клепать....
← →
DimaBr (2005-10-31 14:43) [9]
> Надо с поддержкой пакетов.
А в каком пакете его можно найти ?
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c