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

Вниз

вопрос про работу с разными Interface ами   Найти похожие ветки 

 
XobBIT ©   (2003-05-21 16:52) [0]

Есть ли возможность в run-time получить список всех свойств из определенного интерфейса


 
Romkin ©   (2003-05-21 17:11) [1]

Если это потомок IDispatch - можно, всегда. Есть type library


 
XobBIT ©   (2003-05-21 17:19) [2]

Да потомок IDispatch, но если можно код программы...


 
Набережных С.   (2003-05-21 20:03) [3]

IDispatch здесь вообще-то не при чем. Загружаешь библиотеку типов, в которой описан интерфейс (если она есть), а потом ItypeLib.GetTypeInfo, ITypeInfo.GetTypeAttr и GetDocunentation


 
XobBIT ©   (2003-05-22 10:55) [4]

Вообще интерфейсы уже описаны в модуле, но их много и для кажного отдельго делать процедуру не хочется...


 
XobBIT ©   (2003-05-23 18:39) [5]

Вообще вопрос ITypeInfo, в каком юните находится, и где иожно найти фак по нему...


 
Набережных С.   (2003-05-23 19:43) [6]

uses ...ActiveX...
procedure TForm1.Button1Click(Sender: TObject);
var
Lib: ITypeLib;
Info: ITypeInfo;
n, k: integer;
pAttr: PTypeAttr;
pDesc: PFuncDesc;
s: WideString;
begin
if OpenDialog1.Execute then
begin
s:=OpenDialog1.FileName;
OleCheck(LoadTypeLib(PWideChar(s), Lib));
try
for n:=0 to Pred(Lib.GetTypeInfoCount) do
begin
OleCheck(Lib.GetTypeInfo(n, Info));
OleCheck(Info.GetTypeAttr(pAttr));
try
if
(pAttr.typekind = TKIND_INTERFACE) or
(pAttr.typekind = TKIND_DISPATCH)
then
begin
Info.GetDocumentation(-1, @s, nil, nil, nil);
Memo1.Lines.Add(s);
for k:=0 to Pred(pAttr.cFuncs) do
begin
OleCheck(Info.GetFuncDesc(k, pDesc));
try
Info.GetDocumentation(pDesc.memid, @s, nil, nil, nil);
Memo1.Lines.Add(#9 + s);
finally
Info.ReleaseFuncDesc(pDesc);
end;
end;
end;
finally
Info.ReleaseTypeAttr(pAttr);
end;
end;
finally
Lib:=nil;
end;
end;
end;
Тока если есть ошибки - чур, я не виноват. Сам проверяй.


 
XobBIT ©   (2003-05-24 00:06) [7]

2 Набережных С.: этот код работает только с *.ocx ?


 
Набережных С.   (2003-05-24 12:13) [8]

Этот код работает с любой библиотекой типов - в tlb, exe, dll, ocx etc.


 
XobBIT ©   (2003-05-24 12:52) [9]

2 Набережных С.: Код нормальный просто сразу не вьехал ;)

Но есть вопрос: А можно брать не все интерфейсы, а какой-нибудь определенный и как вызвать свойство...

Заранее спасибо


 
Polevi ©   (2003-05-24 12:54) [10]

GetIdsOfName, Invoke


 
XobBIT ©   (2003-05-24 13:52) [11]

Я воспользовался ITypeLib.GetTypeInfoOfGuid;

Но появился вопрос, как узнать GUID интерфейса



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
1-13296
DDDeN
2003-05-23 09:38
2003.06.05
Ввод в TEdit только цифры


1-13188
Endi
2003-05-26 20:44
2003.06.05
Странности при смене компьютеров


1-13308
Navi
2003-05-25 07:42
2003.06.05
Состояния и веса - сохранение и восстановление


14-13467
Анат
2003-05-18 13:01
2003.06.05
Графический редактор.


3-13101
Алекс
2003-05-19 11:07
2003.06.05
Простой SQL запрос