I want to develop something in the same style with the SA colors. Every object is filled with an array of 256 colors, for instance a button on the navigation page. The theme can be changed. Using the expression: Theme_Control_GetColorIndex(Button_GetState(DspGetAnCur())) the correct color is shown. Any idea how to copy the fill array colors from one object to another? I don't want to do that manually. I tried using the Graphics Builder Automation by using the following VBA script:
Dim GraphicsBuilder As IGraphicsBuilder2
Dim miOnColors(260)
Dim miOffColors(260)
Sub test()
udfCopyFillArray 1
udfCopyFillArray 0
End Sub
I have a breakpoint before udfCopyFillArray 0. I first select the objecct I want to copy the color array from in the Graphics Builder. After hitting the breakpoint I switch to my new object. Should be the PropertiesFillColourColourGetEx and PropertiesFillColourColourPutEx, but these don't work. Some magic with the citect.pal also I guess.
Sub udfCopyFillArray(iSet As Integer)
Dim iCounter As Integer
Dim iOnColourNo As Integer
Dim iOffColourNo As Integer
Dim iLimit As Integer
Dim iOperator As Integer
Dim iIndex As Integer
Set GraphicsBuilder = New GraphicsBuilder.GraphicsBuilder ' Set a new instance of the Graphics Builder
With GraphicsBuilder
For iCounter = 0 To 255
If iSet = 0 Then
iIndex = iCounter
.PropertiesFillColourColourGet iIndex, iOnColourNo, iLimit, iOperator
miOnColors(iCounter) = iOnColourNo
If iCounter < 20 Then
Debug.Print CStr(iOnColourNo) + "," + CStr(iOffColourNo)
End If
Else
iOnColourNo = miOnColors(iCounter)
.PropertiesFillColourColourPut iCounter, iOnColourNo, iLimit, iOperator
End If
Next
End With
Set GraphicsBuilder = Nothing ' Reset the COM-object
End Sub
Anybody an idea?
Thanks in advance!
Bas