2010-10-11 3 views
0

Здравствуйте, кто-то может помочь мне в следующем: я пытаюсь создать диаграмму OpenOffice calc с использованием интерфейса OOoTools.pas. Код заключается в следующем:OpenOffice Automation создает диаграмму при вычислении с использованием Delphi

/////////////////////////////// CODE ////////////////////////////////// 

procedure TForm1.ProcessChart(aFilename : String); 
Var 
        oTheFile, oAllSheets, oMySheet, oCharts, 
        oCellRangeAddress, oRectangle, oSize : Variant; 
begin 
ConnectOpenOffice; 
    oTheFile := OpenSheet(aFilename, True); 
    oAllSheets:= oTheFile.Sheets; 

    oMySheet:= oAllSheets.getByIndex(0); // first sheet of the spreadsheet 

    oCharts := oMySheet.getCharts; 

    oCellRangeAddress := oTheFile.Bridge_getStruct('com.sun.star.table.CellRangeAddress'); 
    oCellRangeAddress.Sheet  := 0;// '1ere feuille du graphique 
    oCellRangeAddress.StartColumn := 0;// 'Ligne 1 
    oCellRangeAddress.StartRow := 0;// 'Colonne A 
    oCellRangeAddress.EndColumn := 3;// 'Colonne D 
    oCellRangeAddress.EndRow  := 29;// 'Ligne 30 

    oRectangle := oTheFile.Bridge_GetStruct('com.sun.star.awt.Rectangle'); 
    oRectangle := oMySheet.Bridge_GetStruct('com.sun.star.awt.Rectangle'); 
    oRectangle.X  := 8000; 
    oRectangle.Y  := 1000; 
    oRectangle.Width := 5000; 
    oRectangle.Height := 5000; 

    // Type Error Mismatch error on this call:  
    oCharts.addNewByName('LogData', 
         oRectangle, 
         oCellRangeAddress, 
         true, 
         true); 

DisconnectOpenOffice; 
End; 

/////////////////////////////// END CODE ////////////////////////////////// 

В вызове oCharts.addNewByName я получаю ошибку «Несоответствие типов» и не имею никакой дополнительной информации, что может быть не так. Или я должен использовать другой подход? Большое спасибо за вашу помощь.

ответ

1

Параметр aRanges addNewByName ожидает последовательность com.sun.star.table.CellRangeAddress, и вы не даете последовательности структур CellRangeAddress, но сама структура.

Попробуйте это:

oCharts.addNewByName('LogData', 
         oRectangle, 
         VarArrayOf(oCellRangeAddress), 
         true, 
         true); 
+0

работает как шарм, спасибо большое! – addelichtman

Смежные вопросы