Главная страница
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.016 c
1-13129
Doc
2003-05-26 00:13
2003.06.05
Как получить на выходе вместо запятой, точку?


14-13412
LK
2003-05-12 16:23
2003.06.05
MIDI API


11-13102
Alexander
2002-09-08 10:17
2003.06.05
Нужны функции для работы с датами DecodeDate & EncodeDate.


1-13221
Spider
2003-05-26 17:18
2003.06.05
Кривой компонент не дает снять задачу...


3-12995
cherox
2003-05-15 13:49
2003.06.05
Как выделить кусок записей в RxDbGrid?