Ich bastel grad an einem Programm zum erstellen von KLimadiagrammen mit Hilfe von Excel. Ich hab über die Typelibs von MS Office die ganzen TExcel*-KOmponenten importiert, und schaffe es auch schon, ein Diagramm mit den im Programm eingegebenen Daten zu erstellen. Nur muss es bei einem Klimadiagramm halt so sein, dass die Werteskala für den Niederschlag an der rechten Seite steht, und die für die Temperatur links. Bei mir teilen sich beide die linke Werteskala. Wenn man in Excel manuell eine Datenreihe auf die rechte Größenachse legt (Datenreihe markieren, Eigenschaften, Reiter Achsen, Datenreihe zeichnen auf Sekundärachse, OK), wird m it dem Makrorecorder folgender Code erstellt:
Quelltext
1:
| ActiveChart.SeriesCollection(2).AxisGroup = 2 |
Die Portierung nach Delphi müsste dann so aussehen:
Delphi-Quelltext
1:
| ExcelApplication1.ActiveWorkbook.ActiveChart.SeriesCollection(2,flcid).AxisGroup:=2; |
(flcid ist dabei =
GetUserDefaultLCID)
Nur geht das leider nicht, da
ActiveChart.SeriesCollection(bla, bla) vom Typ
IDispatch ist, und folglich die Eigenschaft
AxisGroup nicht kennt. Also dachte ich, dass man
SeriesCollection mit dem
as-Operator in ein anderes Objekt konvertieren muss. Ich schaute also in der automatisch erzeugten Unit nach, welche Objekte diese Eigenschaft, oder Get-/Set-Methoden, um sie zu verändern. Da gab es ISeries, ISeriesCollection und Axis, aber wenn ich den Code
Delphi-Quelltext
1:
| (ExcelApplication1.ActiveWorkbook.ActiveChart.SeriesCollection(2,flcid) as ISeries).AxisGroup:=2; |
ausführe, bekomme ich einen nichtssagenden "Ole-Fehler 800401A8".
Wie kann ich korrekt auf
SeriesCollection zugreifen?
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.