FillColor per c# setzen

20/12/2007 - 11:09 von Helmut Fischer | Report spam
Hallo,

ich würde gerne mit c# die FillColor eines Shapes setzen, ich versuche das
mit folgender Funktion:

public void SetBackgroundColor(Visio.Shape shape)
{
ArrayList sourceStream = new ArrayList();
ArrayList formula = new ArrayList();

sourceStream.Add((short)Visio.VisSectionIndices.visSectionObject);
sourceStream.Add((short)Visio.VisRowIndices.visRowFill);
sourceStream.Add((short)Visio.VisCellIndices.visFillForegnd);

formula.Add("RGB(255,0,0)");

Array arrSourceStream = sourceStream.ToArray(typeof(short));
Array arrFormula = formula.ToArray();

shape.SetFormulas(ref arrSourceStream, ref arrFormula, 0);

}

Leider bekomme ich bei shape.SetFormulas(...) die vielsagende COMException
{"Ausnahme aufgetreten."}. Getestet habe ich das Ganze mit dem
"Prozess"-Shape auf "C:\Program Files\Microsoft
Office\Office12\1031\BASFLO_M.VSS", aber auch mit einigen anderen Shapes aus
diesem Template, alle mit dem gleichen Fehler. Ich habe auch getestet, ob
das Problem an dem Wert "RGB(255,0,0)" liegt, aber anscheinend wird dies als
gültiger Wert erkannt, bei falscher Schreibweise kommt die COMException
{"Unbekannter Funktionsname."}.

Ich habe mehrere solcher Funktionen geschrieben, die bestimmte
Shapeeigenschaften setzen, z.B. die Breite oder Position eines Shapes. Alle
Funktionen verwenden die SetFormulas-Methode, nur mit entsprechenden
Parametern. Alle anderen funktionieren, nur diese leider nicht. Ich habe
heute das Visio 2007 ServicePack installiert in der Hoffnung, dass das eine
Besserung bringen würde, aber leider ohne Erfolg.

Hat einer von Euch vielleicht eine zündende Idee?

Vielen Dank, Helmut
 

Lesen sie die antworten

#1 Senaj Lelic [DE MVP Visio]
21/12/2007 - 19:14 | Warnen spam
Hallo Helmut,

mal eine ganz simple Frage:
wieso verwendest Du nichtdirekt die Cells Eigenschaft ?
in C# wàre dies ca eine Zeile in etwa so:
public void SetBackgroundColor(Visio.Shape shape)
{

shape.Get_Cells("FillForegnd").Formula = "\"" + "RGB(255,0,0)" +
"\"";

}

das wars :-)


Mit freundlichen Grüßen/ with kind regards
Senaj Lelic
DE MVP Visio




"Helmut Fischer" schrieb im Newsbeitrag
news:
Hallo,

ich würde gerne mit c# die FillColor eines Shapes setzen, ich versuche das
mit folgender Funktion:

public void SetBackgroundColor(Visio.Shape shape)
{
ArrayList sourceStream = new ArrayList();
ArrayList formula = new ArrayList();


sourceStream.Add((short)Visio.VisSectionIndices.visSectionObject);
sourceStream.Add((short)Visio.VisRowIndices.visRowFill);
sourceStream.Add((short)Visio.VisCellIndices.visFillForegnd);

formula.Add("RGB(255,0,0)");

Array arrSourceStream = sourceStream.ToArray(typeof(short));
Array arrFormula = formula.ToArray();

shape.SetFormulas(ref arrSourceStream, ref arrFormula, 0);

}

Leider bekomme ich bei shape.SetFormulas(...) die vielsagende COMException
{"Ausnahme aufgetreten."}. Getestet habe ich das Ganze mit dem
"Prozess"-Shape auf "C:\Program Files\Microsoft
Office\Office12\1031\BASFLO_M.VSS", aber auch mit einigen anderen Shapes
aus diesem Template, alle mit dem gleichen Fehler. Ich habe auch getestet,
ob das Problem an dem Wert "RGB(255,0,0)" liegt, aber anscheinend wird
dies als gültiger Wert erkannt, bei falscher Schreibweise kommt die
COMException {"Unbekannter Funktionsname."}.

Ich habe mehrere solcher Funktionen geschrieben, die bestimmte
Shapeeigenschaften setzen, z.B. die Breite oder Position eines Shapes.
Alle Funktionen verwenden die SetFormulas-Methode, nur mit entsprechenden
Parametern. Alle anderen funktionieren, nur diese leider nicht. Ich habe
heute das Visio 2007 ServicePack installiert in der Hoffnung, dass das
eine Besserung bringen würde, aber leider ohne Erfolg.

Hat einer von Euch vielleicht eine zündende Idee?

Vielen Dank, Helmut



Ähnliche fragen