Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c