2012-06-28 55 views
1

我正在編程創建barseries(Delphi2007,TeeChar 7免費版)。我想在圖中有相鄰的小節,所以我嘗試創建多個小節並使用multibar屬性。multibar property給訪問衝突

當在main_unit中設置multibar屬性時,出現訪問衝突(調試時,如果檢查barseries對象,我可以看到multibar屬性爲「越界」)。 僅當我在創建barseries的單元中設置屬性時,纔會出現錯誤。我如何從外部操縱酒吧?我需要在unit1中設置一個屬性嗎?

這裏是我的代碼片斷:

unit unit1 
type TMyChart = Class 
fchart: TChart; 
procedure addSinglebarSeries(var X, Y: integer)  
.... 
implementation 
function TSignalchart.addSinglebarSeries(var X, Y: integer): TBarSeries; 
j, n : integer; 
begin 
    result := TBarSeries.Create(fChart); 
    result.AddXY(x,Y,inttostr(x), clRed); 
    barseries.MultiBar := mbStacked; //here no access violation 
end; 

---- 
unit main-unit 

implementation 
uses TeEngine, TeeProcs, unit1; 
procedure myprocedure; 
var 
newChart : TMyChart; 
X, Y := array of integer; 
barseries : TBarSeries; 
aX, aY, i: integer; 

begin 
//I create the newchart object, I create X, Y 

    for i := 0 to length(X) - 1 do 
    begin 
     aX := X[i]; 
     aY := Y[i]; 
     barseries := newChart.addsinglebarSeries(aX,aY); 
    end; 
    //barseries.MultiBar := mbStacked; //access violation!! 
    end; 
+0

只是爲了澄清:這是德爾福7(從標籤)或2007(從文本)? –

+0

對不起,這是德爾福2007年(我剛剛編輯標籤) – lib

+0

我編輯了這個問題,因爲我發現,從聲明對象的同一單元加入多欄屬性不會導致訪問衝突。所以,現在,我將繼續在unit1中編輯我的方法 – lib

回答

1

下面是在TeeChart(D2007)中加入5多梳堆疊系列的一個例子。 Chart1TChart組件從組件面板下降,Button1是一個標準的TButton放在同樣的方式:

// D2007+ way to easily initialize dynamic arrays 
type 
    TIntArray=array of Integer; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    BarSeries: TBarSeries; 
    X, Y: TIntArray; 
    i: Integer; 
begin 
    X := TIntArray.Create(1, 2, 3, 4, 5);  // SetLength and initialize rolled into one 
    Y := TIntArray.Create(10, 20, 30, 40, 50); // Nonsense values, of course. 
    Chart1.SeriesList.Clear; 
    for i := Low(X) to High(X) do 
    begin 
    BarSeries := TBarSeries.Create(Chart1); 
    BarSeries.AddXY(X[i], Y[i]); 
    BarSeries.MultiBar := mbStacked; 
    Chart1.AddSeries(BarSeries); 
    end; 
end; 

這裏的點擊Button1後的形式:

enter image description here