Когда я импортирую файл ocx в Delphi, он появляется на вкладке ActiveX палитры компонентов. Я просто перетаскиваю его мышью и надеваю форму и объект
График 1: TGraph;
автоматически добавляется в мой код. Его свойства и события становятся видимыми в окне инспектора объектов. Теперь я хочу получить доступ к осям элемента управления из моего кода. Как видите, свойство представляет собой координатные оси. Также я предполагаю, что члены IGraphAxes XAxis / YAxis / ZAxis являются указателями idispatch типа IGraphAxis. Я написал следующие процедуры для доступа к интерфейсу idispatch:
procedure TForm2.GetProperty(dispobj: IDispatch; PropertyName: WideString;
var retvalue: Variant; Sender: TObject);
var hr: HRESULT;
DispId: integer;
value: Variant;
params: TDispParams;
begin
hr:=dispobj.GetIDsOfNames(GUID_NULL,@PropertyName, 1, LOCALE_SYSTEM_DEFAULT, @DispId);
Label1.Caption:=inttostr(DispId);
hr:=dispobj.Invoke(DispId,GUID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_PROPERTYGET,
Params,@Value,nil,nil);
Retvalue:=Value;
Label2.Caption:=inttostr(value);
end;
procedure TForm2.SetProperty(dispobj: IDispatch; PropertyName: WideString; Value: OLEVariant; Sender: TObject);
var
hr: HRESULT;
DispId: integer;
params: TDispParams;
begin
hr:=dispobj.GetIDsOfNames(GUID_NULL,@PropertyName,1, LOCALE_SYSTEM_DEFAULT, @DispId);
Label1.Caption:=inttostr(DispId);
params.rgvarg:=@Value;
params.rgdispidNamedArgs:=@DispIDArgs;
params.cArgs:=1;
params.cNamedArgs:=1;
hr:=dispobj.Invoke(DispId,GUID_NULL,LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT,Params,nil,nil,nil);
end;
Они отлично работают со свойствами Color и Style IGraphAxes:
GetProperty(Graph1.GraphAxes, 'Color', retvalue, Sender);
или
SetProperty(Graph1.GraphAxes, 'Color',value,Sender);
Но как получить полный доступ к членам XAxis / YAxis / ZAxis IGraphAxes?