Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Screen.DataModuleCount = 0 always in Design Time   Найти похожие ветки 

 
pasha_golub ©   (2006-08-15 13:26) [0]

В дизайн-тайме мой компонент должен пробежаться по всем формам и датамодулям для обнаружения наличия некоего компонента. Так вот в design time кол-во датамодулей всегда возвращает ноль, не важно сколько модулей наличиствует на самом деле.

1. Это проблема только Д7?
2. Можно ли это победить?

Спасибо


 
MBo ©   (2006-08-15 13:56) [1]

1. Это баг, появившийся в D6
2. возможно, придется через OTA работать


 
MBo ©   (2006-08-15 13:58) [2]

пример с OTA
http://groups.google.ru/group/borland.public.delphi.vcl.components.writing/browse_thread/thread/2b73db758facc190/1045a2eac43a69b2?lnk=gst&q=Greg+Saunders+&rnum=1#1045a2eac43a69b2


 
pasha_golub ©   (2006-08-15 14:43) [3]


> MBo ©   (15.08.06 13:58) [2]

Огромное, Борис, спасибо!


 
pasha_golub ©   (2006-08-15 17:22) [4]

Может кому понадобиться:


Uses ToolsAPI;

procedure FillComponents(ACompList: TList;
 ACompClass: TClass);
var
 I, J, K: Integer;
 ModuleServices: IOTAModuleServices;
 Module: IOTAModule;
 Editor: IOTAEditor;
 FormEditor: IOTAFormEditor;
 RootComp: IOTAComponent;
 Comp: TComponent;
begin
 If not (Assigned(ACompList) and Assigned(ACompClass)) then
   Exit;

 ModuleServices := BorlandIDEServices as IOTAModuleServices;
 if ModuleServices = nil then Exit;
 for I := 0 to ModuleServices.ModuleCount - 1 do
 begin
   Module := ModuleServices.Modules[I];
   for J := 0 to Module.GetModuleFileCount - 1 do
   begin
     Editor := Module.GetModuleFileEditor(J);
     if Editor.QueryInterface(IOTAFormEditor, FormEditor) = S_OK then
     begin
       FormEditor.Show;
       RootComp := FormEditor.GetRootComponent;
       if RootComp <> nil then
       begin
         Comp := (RootComp as INTAComponent).GetComponent;
         for K :=0 to Comp.ComponentCount-1 do
          If Comp.Components[K] is ACompClass then
            ACompList.Add(Comp.Components[K]);
       end;
     end;
   end;
 end;
end;


Использование:


var List: TList;
    i: integer;
....

 List := TList.Create;
  try
   FillComponents(List,TDataset);
   For i := 0 to List.Count-1 do
    ShowMessage(TDataset(List[i]).Name);
  finally
   List.Free;
  end;



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1155108859
Kiloper
2006-08-09 11:34
2006.09.24
Чем отличается в классах Free от Destroy?


3-1153828947
Антоныч
2006-07-25 16:02
2006.09.24
Одним запросом данные из таблиц разных форматов


3-1153830575
infom
2006-07-25 16:29
2006.09.24
СУБД с возможностью создания перекресных запросов.


15-1157028147
Ega23
2006-08-31 16:42
2006.09.24
Это всё ваши армейские ветки виноваты!


1-1155316602
wipr
2006-08-11 21:16
2006.09.24
Как изменить определенный байт в файле