Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Редакторы компонент [D6, Win2k, WinXP]


DimaBr ©   (2005-10-25 12:07:00) 

Здравствуйте !
Пишу TComboBox + TStoredProc, где TStoredProc - субкомпонент. Нужно вывести на поверхность Field Editors. Как это сделать ?


DimaBr   (2005-10-31 14:43:00) [1]


> Надо с поддержкой пакетов.
А в каком пакете его можно найти ?


Priest   (2005-10-27 17:49:00) [2]

Поэтому и не находит. Надо с поддержкой пакетов. А чтобы твой компонент не требовал пакетов, редактор компонента нужно в отдельном пакете клепать....


DimaBr   (2005-10-27 15:47:00) [3]

Priest ©   (27.10.05 11:26) [6]

Нет, конечно.


Priest   (2005-10-27 11:26:00) [4]

>>DimaBr

А ты редактор компонента билдишь с пакетами?


DimaBr   (2005-10-27 08:52:00) [5]

To Юрий Зотов.
Я так и пытался делать, но подключение модуля  BDEReg.pas произвести не удаётся, поскольку ругается на отсутствие Report.dcu. Модет он уже скомпилирован в каком-нибудь пакете ?


Юрий Зотов   (2005-10-27 03:39:00) [6]

> Priest ©   (26.10.05 16:29) [3]

Тут другая задача. Там нужно было приспособить редактор свойства в качестве пункта меню редактора компонента, а здесь нужно приспособить редактор одного компонента к другому компоненту.

> DimaBr   (26.10.05 10:46) [2]

Редактор компонента TStoredProc - все же не Fields Editor, а TStoredProcEditor (см. BDEReg.pas). Fields Editor - это лишь один из пунктов его меню.

Значит, пишем свой редактор компонента по аналогии с TStoredProcEditor, и регистрируем его для нашего компонента. Естественно, работать он должен с субкомпонентом.


Priest   (2005-10-26 16:29:00) [7]

Поищи здесь по форуму....Я задавал вопрос как вызвать редактор коллекции....Вот часть ветки

Юрий Зотов ©   (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;


DimaBr   (2005-10-26 10:46:00) [8]

Fields Editor - редактор компонентаTStoredProc (очепяточка вышла). Помогите вынести его на поверхность ComboBox.


Юрий Зотов   (2005-10-26 05:01:00) [9]

Ни в TComboBox, ни в TStoredProc никаких полей обнаружить не удалось. Поэтому при чем тут редактор полей - пока что непонятно. Видимо, есть смысл уточнить вопрос.


Наверх

Титульная страница Поиск, карта сайта Написать письмо