EControl Ltd. Forum Index EControl Ltd.
VCL libraries and software support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Возмо&

 
Post new topic   Reply to topic    EControl Ltd. Forum Index -> EControl Form Designer
View previous topic :: View next topic  
Author Message
salexn75



Joined: 23 Dec 2008
Posts: 4

PostPosted: Wed Dec 24, 2008 9:26 am    Post subject: Возмо& Reply with quote

Добрый день. Скачал триальную версию и возникли вопросы:
1. Есть модуль данных в проекте. Можно ли как то из дизайнера достучаться до DataSet на этом модуле?
2. Можно ли сделать свой обработчик Propery Editor? Так например для своего компонента некоторые данные для PropertyEditor известны только в ран-тайм. Использовали LMD Designer, там возможно было такое выкручивать
Back to top
View user's profile Send private message
econtrol
Site Admin


Joined: 09 Jun 2006
Posts: 202

PostPosted: Fri Dec 26, 2008 8:35 am    Post subject: Reply with quote

Добрый день,

1. Да можно. Дизайнер не что иное как собственная реализация принципов заложенных в дизайнере Delphi IDE. Редактируемый объект - комонент, и все дочерние компоненты доступны через свойство Components[].

Например послезагрузки компонета (модуля данных или формы) из файла (dfm)
Code:
var DM: TDataModule;
      Tbl: TTable;
begin
   DM := TDataModule.Create(Application);
   zReadCmpFromFile(FileName, DM);
    zFormDesigner1.Target := DM;
    zFormDesigner1.Active := True;
   // Находим таблицу
    Tbl := TTable(DM.FindComponent('Mytable'));
   // Например, открываем радактор комоненты TTable (редактор полей)
    if Assigned(Tbl) then
       zFormDesigner1.Edit(Tbl);
end;


2. Да все необходимые design-time объекты поддерживаются,
а именно:
1. Редакторы свойств (наследники TPropertyEditor)
2. Редакторы комонентов (наследники TComponentEditor)
3. Модули (наследники TCustomModule, непример редакто Quick Report)
4. Поля (TFields)
5. Действия (TAction)

Для добавления этих объектов к приложению нужно также, как в Delphi IDE регистрировать классы этизх обхектов, используя:
1. RegisterPropertyEditor
2. RegisterComponentEditor
3. RegisterCustomModule
4. RegisterFields
5. RegisterActions
Для регистрации компонент:
RegisterComponents
RegisterNoIcon

При сборке приложения с Runtime Packages:
1. Если классы находятся в основном EXE - вызвать процедуру регистрации вручную, напрмер, в конструкторе главной формы
2. Если классы реализованы в отдельном пакете (BPL) - добавить в один из модулей этой BPL процедуру Register, в которой производить регистрацию объектов и комонентов. Это точно также, как производится регистрация в Delphi IDE. В этом случае регистрация компонентов и объектов design-time будет производиться при загрузке BPL используя DsnLoadPackage(BplFile: string).

При сборке без Runtime Packages:
Рузультирующее приложение EXE не использует BPL (по крайней мере не использует DesignIDE##.bpl). В этом случае регистрация производится вручную, напрмер, в конструкторе главной формы.

Таким образом, тот функционал, который доступен в Delphi IDE элементарно переносится в приложение с использованием "EControl Form Designer Pro".

Пример регистрации всех объектов Design-time библиотеки DevExpress ExpressQuantumGrid:

Code:
  cxGridReg.Register;
  cxGridPopupMenuReg.Register;


Михаил.
Back to top
View user's profile Send private message Send e-mail
salexn75



Joined: 23 Dec 2008
Posts: 4

PostPosted: Fri Dec 26, 2008 10:27 am    Post subject: Reply with quote

Спасибо, но наверное я не корректно сформулировал вопрос. Я создаю форму в дизайнере, и мне необходимо в качестве Lookup DataSource(DataSet) указать компонент, который лежит на модуле данных, который есть в проекте. Возможно ли это?
Back to top
View user's profile Send private message
econtrol
Site Admin


Joined: 09 Jun 2006
Posts: 202

PostPosted: Fri Dec 26, 2008 10:37 am    Post subject: Reply with quote

Please, post you message again in English.
I can not read it (I think you may see that your message is not displayed correctly).

Michael.
Back to top
View user's profile Send private message Send e-mail
salexn75



Joined: 23 Dec 2008
Posts: 4

PostPosted: Fri Dec 26, 2008 10:52 am    Post subject: Reply with quote

I created form in EControl designer and i want to link Lookup DataSource. Problem is DataSource placed on DataModule and Object Inspector don't have access to this DataModule. Can i do it?

P.S. Sorry for my English
Back to top
View user's profile Send private message
econtrol
Site Admin


Joined: 09 Jun 2006
Posts: 202

PostPosted: Fri Dec 26, 2008 12:03 pm    Post subject: Reply with quote

Yes, it is possible using TDesignerEvents.OnGetGlobalComponents event, for example:

Code:
// Set global Components List
function TForm1.DesignerEvents1GetGlobalComponents(Root: TComponent;
  const List: TList): Boolean;
begin
 Result := True;
 List.Add(DataModule1);
end;


In this case in object inspector there will be possible to define references like 'DataModule1.DSbiolife'.
See main demo as example. All db controls on the form references data sources from data module.

Michael.
Back to top
View user's profile Send private message Send e-mail
salexn75



Joined: 23 Dec 2008
Posts: 4

PostPosted: Sat Dec 27, 2008 10:28 am    Post subject: Reply with quote

Thanks!
Great!!!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    EControl Ltd. Forum Index -> EControl Form Designer All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group