![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызов редактора суб-компонента
DimaBr © (2005-11-25 08:54:00)Компонент содержит суб-компонент, который имеет редактор. Как вынести (вызвать) на поверхность редактор суб-компонента.
DimaBr (2005-11-30 15:51:00) [1]> Юрий Зотов © (28.11.05 18:48) [5]
> Сначала наваять форму его редактирования, потом см. [3].
Объясняю ситуацию.
Для работы с БД мы используем хранимые процедуры: (Show,Insert, Update, Delete) на каждую таблицу. Это сделано для разделения Клиент-Сервер.
Из приложения процедуры вызываются компонентой TStoredProc (соответственно 4 компоненты). Хранить процедуры в DataModule неудобно, поскольку трудно искать (порядка 200). Получается на главной форме большое скопление НЕвизуальных компонент. Мне пришла идея написать компонент - подобие ActionList для хранения TStoredProc. Написал компонент TStoredProcList и редактор подобный редактору АctionList. Теперь выбирая в редакторе нужную Хр.Процедуру нужно вызвать <Fields Editor> выбранного компонента.
Юрий Зотов (2005-11-28 18:48:00) [2]> DimaBr (28.11.05 17:13) [4]
> как вызвать редактор суб компонента?
Сначала наваять форму его редактирования, потом см. [3].
DimaBr (2005-11-28 17:13:00) [3]Это то понятно, редакторы писать я могу. Вопрос в том как вызвать редактор суб компонента ?
Написать
inherited ExecuteVerb(<NNN>), где NNN - номер Popup пункта или 0 (ноль) если его нет. Но это, как мне кажется прокатит только при наследовании компонента от подобного.
Юрий Зотов (2005-11-28 14:54:00) [4]Метод ExecuteVerb. Ему передается индекс пункта меню, по которому щелкнул юзер, а дальше - что напишем, то и произойдет. Например, ничто не мешает нашему коду поднять форму редактора подкомпонента:
procedure TMyComponentEditor.ExecuteVerb(Index: Integer);
begin
if Index = GetVerbCount - 1 then
with TMySubComponentEditorForm.Create(nil) do
try
... // Настраиваем форму по текущему состоянию подкомпонента
if ShowModal = mrOK then
... // Переносим изменения в подкомпонент
finally
Free
end
else
inherited
end;
DimaBr (2005-11-28 08:30:00) [5]Спасибо, огромное, если можно небольшой набросок по Варианту 2.
Как можно вызвать редактор компонента ?
Юрий Зотов (2005-11-25 15:28:00) [6]Вариант 1 - сделать ссылку на подкомпонент published-свойством и написать редактор этого свойства.
Вариант 2 - написать редактор компонента-контейнера, а в одном (или единственном) пункте меню этого редактора вызывать редактор подкомпонента.