2016-12-16 7 views
1

Delphi Seattle, Excel 2013. Мне нужно установить фон ячейки как градиент. Я могу установить цвет фона, если это единственный цвет, но я не могу получить синтаксис для градиентов. Часть проблемы заключается в том, что градиент для ячейки является IDispatch. В следующем коде будет установлен один цвет фона.Delphi - настройка цвета ячейки Excel Цвет Градиент

procedure TForm1.GradientTestClick(Sender: TObject); 
var 
    oExcel : ExcelApplication; 
    RawDataSheet :_Worksheet; 
    ThisCell : ExcelRange; 
begin 
    oExcel := CreateOleObject('Excel.Application') as ExcelApplication; 
    oExcel.Visible[LOCALE_USER_DEFAULT] := True; 

    // Add a New Workbook, with a single sheet 
    oExcel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT); 
    // Get the handle to the active Sheet, and insert some dummy data 
    RawDataSheet := oExcel.ActiveSheet as _Worksheet; 
    ThisCell := RawDataSheet.Range['A1', EmptyParam]; 
    ThisCell.Value2 := 10; 


    // To set ONE Color 
    ThisCell.Interior.Pattern := xlSolid; 
    ThisCell.Interior.ColorIndex := 3; 

    // To Set Gradient... 


end; 

Когда я записываю первенствовать Macro установки градиен Я хочу (Linear, 2 цвета, зеленого до желтого), макрос

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    With Selection.Interior 
     .Pattern = xlPatternLinearGradient 
     .Gradient.Degree = 0 
     .Gradient.ColorStops.Clear 
    End With 
    With Selection.Interior.Gradient.ColorStops.Add(0) 
     .Color = 5296274 
     .TintAndShade = 0 
    End With 
    With Selection.Interior.Gradient.ColorStops.Add(1) 
     .Color = 65535 
     .TintAndShade = 0 
    End With 
End Sub 

То, что я должен быть в состоянии сделать в Дельфах. ..

ThisCell.Interior.Pattern := xlPatternLinearGradient; 
    ThisCell.Interior.Gradient.Degree := 0; 
    ThisCell.Interior.Gradient.ColorStops.Clear; 
    ThisCell.Interior.Gradient.ColorStops.Add[0].Color := 5296274; 
    ThisCell.Interior.Gradient.ColorStops.Add[1].Color := 65535; 

Мое требование состоит в том, что ThisCell.Interior.Gradient является IDispatch. Как установить другие «под-свойства», такие как «Степень» и «Колодки»?

Благодаря

+1

Вы пытались назначить. Градиент для OleVariant, а затем использовать на нем поздние ссылки? Например. 'vGradient.Degree: = 0' – MartynA

ответ

2

Использование позднего связывания для доступа к методам/свойства на интерфейсе IDispatch.

... 
    Gradient: OleVariant; 
begin 
    .... 

    // To Set Gradient... 

    ThisCell.Interior.Pattern := xlPatternLinearGradient; 
    Gradient := ThisCell.Interior.Gradient; 
    Gradient.Degree := 45; 
    Gradient.ColorStops.Clear; 
    Gradient.ColorStops.Add(0).Color := 5296274; 
    Gradient.ColorStops.Add(1).Color := 65535; 
+0

То есть. Мне пришлось использовать позднюю привязку. – user1009073

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

  • Нет связанных вопросов^_^