⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teeediseri.pas

📁 第三方控件:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范例。 该
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    begin
      ChartGrid1.Chart:=TCustomChart(TheSeries.ParentChart);
      ChartGrid1.Series:=TheSeries;
      ChartGrid1.Visible:=True;
      ChartGridNavigator1.Visible:=True;
    end;

    Panel4.Visible:=False;

    if CBDataSourceStyle.ItemIndex=1 then
    begin
      Panel4.Visible:=True;
      tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
      CheckCBSamples;
      if tmpNum=0 then tmpNum:=TheSeries.NumSampleValues;
      ESamples.Text:=IntToStr(tmpNum);
    end
    else
    if CBDataSourceStyle.ItemIndex>1 then
    begin
      With CBDataSourceStyle do
      if ItemIndex=2 then
         tmpForm:=TFormClass(Items.Objects[2]).Create(Self)
      else
      begin
        tmpSource:=TTeeSeriesSourceClass(Items.Objects[ItemIndex]);
        if tmpSource.HasNew then
        begin
          EnableButton(NewDataButton);
          EnableButton(EditDataButton);
          EnableButton(DeleteDataButton);
        end;

        tmpForm:=TFormClass(tmpSource.Editor).Create(Self);
      end;

      DataSourceStyle:=TBaseSourceEditor(tmpForm);
      DataSourceStyle.Align:=alClient;
      AddFormTo(DataSourceStyle,Panel2,TheSeries);

      TeeTranslateControl(tmpForm); // 7.02

      // Hack.
      Timer1.Enabled:=True;
    end;
  end;
end;

procedure TFormTeeSeries.CBShowInLegendClick(Sender: TObject);
begin
  TheSeries.ShowInLegend:=CBShowInLegend.Checked;
end;

procedure TFormTeeSeries.CBCursorChange(Sender: TObject);
begin
  with TheSeries do
       Cursor:=TeeSetCursor(Cursor,CBCursor.Items[CBCursor.ItemIndex]);
end;

procedure TFormTeeSeries.SEArrowLengthChange(Sender: TObject);
begin
  if CanModifySeries then
     TheSeries.Marks.Callout.Length:=UDArrowsLength.Position;
end;

procedure TFormTeeSeries.CBMarkClipClick(Sender: TObject);
begin
  TheSeries.Marks.Clip:=CBMarkClip.Checked;
end;

procedure TFormTeeSeries.CBMarksVisibleClick(Sender: TObject);
var Old : Boolean;
begin
  TheSeries.Marks.Visible:=CBMarksVisible.Checked;
  Old:=ChangingPage;
  ChangingPage:=True;
  CBAllVisible.Checked:=AllSeriesMarksVisible;
  ChangingPage:=Old;
end;

procedure TFormTeeSeries.FormDestroy(Sender: TObject);
begin
  DestroySeriesForms;
  if Assigned(TheChart) then
     {$IFNDEF CLR}TTeePanelAccess{$ENDIF}(TheChart).RemoveListener(Self);
end;

procedure TFormTeeSeries.FormShow(Sender: TObject);
begin
  CreatingForm:=False;

  if Assigned(InternalOnCreateEditSeries) and Assigned(TheSeries) then
     InternalOnCreateEditSeries(Self,TCustomChart(TheSeries.ParentChart));
  if Assigned(InternalOnCreateEditSeriesObj) and Assigned(TheSeries) then
     InternalOnCreateEditSeriesObj(Self,TCustomChart(TheSeries.ParentChart));

  CBShowInEditor.Visible:=csDesigning in TheSeries.ComponentState;
  CBShowInEditor.Checked:=TheSeries.ShowInEditor;
end;

procedure TFormTeeSeries.SEMarksAngleChange(Sender: TObject);
begin
  if CanModifySeries then
     TheSeries.Marks.Angle:=UDMarksAngle.Position;
end;

procedure TFormTeeSeries.CBHorizAxisChange(Sender: TObject);
begin
  With CBHorizAxis do
  if ItemIndex<3 then
     TheSeries.HorizAxis:=THorizAxis(ItemIndex)
  else
  begin
    TheSeries.HorizAxis:=aCustomHorizAxis;
    TheSeries.CustomHorizAxis:=TChartAxis(Items.Objects[ItemIndex]);
  end;
end;

procedure TFormTeeSeries.CBVertAxisChange(Sender: TObject);
begin
  With CBVertAxis do
  if ItemIndex<3 then
     TheSeries.VertAxis:=TVertAxis(ItemIndex)
  else
  begin
    TheSeries.VertAxis:=aCustomVertAxis;
    TheSeries.CustomVertAxis:=TChartAxis(Items.Objects[ItemIndex]);
  end;
end;

procedure TFormTeeSeries.EMarksEveryChange(Sender: TObject);
begin
  if CanModifySeries then // 5.02
     TheSeries.Marks.DrawEvery:=UDEvery.Position;
end;

procedure TFormTeeSeries.CBMultiLineClick(Sender: TObject);
begin
  TheSeries.Marks.MultiLine:=CBMultiLine.Checked;
end;

procedure TFormTeeSeries.CBSortChange(Sender: TObject);
begin // Change sorting order...
  With TheSeries do
  begin
    NotMandatoryValueList.Order:=loNone;
    if CBSort.ItemIndex=2 then MandatoryValueList.Order:=loNone
    else
    begin
      if CBSort.ItemIndex=0 then MandatoryValueList.Order:=loAscending
                            else MandatoryValueList.Order:=loDescending;
      CheckOrder;
    end;
  end;
end;

procedure TFormTeeSeries.CBFormatChange(Sender: TObject);
begin
  TheSeries.ValueFormat:=LocalToDelphiFormat(CBFormat.Text);
end;

Function TFormTeeSeries.CheckCanClose:Boolean;
begin
  if Assigned(DataSourceStyle) then result:=DataSourceStyle.CloseQuery
                               else result:=True;
end;

procedure TFormTeeSeries.PageSeriesChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  AllowChange:=CheckCanClose;

  if Sender<>Owner then
     ChangingPage:=AllowChange;
end;

procedure TFormTeeSeries.CBDepthClick(Sender: TObject);
begin
  if CanModifySeries then
     if CBDepth.Checked then TheSeries.Depth:=-1
                        else TheSeries.Depth:=UDDepth.Position;
end;

Function TFormTeeSeries.CanModifySeries:Boolean;
begin
  result:=(not CreatingForm) and (not ChangingPage) and Assigned(TheSeries);  // 7.0
end;

procedure TFormTeeSeries.EDepthChange(Sender: TObject);
begin
  if CanModifySeries then
  begin
    TheSeries.Depth:=UDDepth.Position;
    CBDepth.Checked:=False;
  end;
end;

procedure TFormTeeSeries.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose:=CheckCanClose;
end;

procedure TFormTeeSeries.CBAllVisibleClick(Sender: TObject);
var t : Integer;
begin
  if CanModifySeries then
  begin
    With TheSeries.ParentChart do
    for t:=0 to SeriesCount-1 do
      Series[t].Marks.Visible:=CBAllVisible.Checked;
    CBMarksVisible.Checked:=CBAllVisible.Checked;
  end;
end;

procedure TFormTeeSeries.PaintBox1Paint(Sender: TObject);
var R : TRect;
begin
  if Assigned(TheSeries) then
  begin
    with PaintBox1.Canvas do
    begin
      Brush.Style:=bsSolid;
      Brush.Color:=PaintBox1.Color;
      R:=PaintBox1.ClientRect;
      InflateRect(R,0,-4);
      FillRect(R);
    end;

    PaintSeriesLegend(TheSeries,PaintBox1.Canvas,R);
  end;
end;

procedure TFormTeeSeries.PaintBox1Click(Sender: TObject);
var tmp : TColor;
begin
  if Assigned(TheSeries) then
  begin
    tmp:=TheSeries.SeriesColor;
    if EditColorDialog(Self,tmp) then
    begin
      TheSeries.SeriesColor:=tmp;
      PaintBox1.Repaint;
    end;
  end;
end;

procedure TFormTeeSeries.CBSamplesDefaultClick(Sender: TObject);
begin
  if CBSamplesDefault.Checked then
  begin
    ESamples.Text:=IntToStr(TheSeries.NumSampleValues);
    CBSamplesDefault.Enabled:=False;
  end;
end;

procedure TFormTeeSeries.CheckCBSamples;
var tmpNum : Integer;
begin
  tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
  CBSamplesDefault.Checked:=(tmpNum=0) or (tmpNum=TheSeries.NumSampleValues);
  CBSamplesDefault.Enabled:=not CBSamplesDefault.Checked;
end;

procedure TFormTeeSeries.ESamplesChange(Sender: TObject);
var tmpNum : Integer;
begin
  tmpNum:=StrToIntDef(ESamples.Text,0);
  TChartSeriesAccess(TheSeries).INumSampleValues:=tmpNum;
  CheckCBSamples;
  BApplyRandom.Enabled:=True;
end;

procedure TFormTeeSeries.BApplyRandomClick(Sender: TObject);
var tmpNum : Integer;
begin
  tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
  if tmpNum=0 then TheSeries.FillSampleValues
              else TheSeries.FillSampleValues(tmpNum);
end;

procedure TFormTeeSeries.TeeEvent(Event:TTeeEvent);
begin
  if not (csDestroying in ComponentState) then
  if Event is TTeeSeriesEvent then
  With TTeeSeriesEvent(Event) do
       if Event=seChangeColor then PaintBox1.Invalidate
       else
       if (Event=seRemove) and (Series=TheSeries) then
       begin
         DestroySeriesForms;
         TheSeries:=nil;
         CBSeriesChange(Self);
       end;
end;

procedure TFormTeeSeries.EArrowDistChange(Sender: TObject);
begin
  if CanModifySeries then
     TheSeries.Marks.Callout.Distance:=UDArrowDist.Position;
end;

procedure TFormTeeSeries.BCalloutPointerClick(Sender: TObject);
begin
  EditSeriesPointer(Self,TheSeries.Marks.Callout);
end;

procedure TFormTeeSeries.CBHeadChange(Sender: TObject);
begin
  if CanModifySeries then
     TheSeries.Marks.Callout.ArrowHead:=TArrowHeadStyle(CBHead.ItemIndex);
end;

procedure TFormTeeSeries.Edit1Change(Sender: TObject);
begin
  if CanModifySeries then
     TheSeries.Marks.Callout.ArrowHeadSize:=UDHeadSize.Position;
end;

procedure TFormTeeSeries.ChartGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  if ChartGrid1.Series<>nil then
     ChartGrid1.Series.RefreshSeries;
end;

procedure TFormTeeSeries.Timer1Timer(Sender: TObject);
begin
  // VCL bug workaround:
  // Force pagecontrol to re-show again our tab with the correct controls on it.
  // This must be done using a timer to delay until parent form is totally
  // visible. Anybody knows a better solution?
  Timer1.Enabled:=False;

  {$IFNDEF CLX}
  PageSeries.ActivePage:=nil;
  PageSeries.ActivePage:=TabDataSource;
  {$ENDIF}
end;

Function TFormTeeSeries.FindZList:TChartValueList;
begin
  result:=TChartSeriesAccess(TheSeries).ValueListOfAxis(TheSeries.ParentChart.DepthAxis);
  if not Assigned(result) then
     result:=TChartSeriesAccess(TheSeries).ValueListOfAxis(TheSeries.ParentChart.DepthTopAxis);
end;

procedure TFormTeeSeries.CBZDateTimeClick(Sender: TObject);
var tmpList : TChartValueList;
begin
  tmpList:=FindZList;
  if Assigned(tmpList) then
     tmpList.DateTime:=CBZDateTime.Checked
  else
     CBZDateTime.Hide;
end;

procedure TFormTeeSeries.Button1Click(Sender: TObject);
begin
  CBFormat.Text:=TFormatEditor.Change(Self,CBFormat.Text);
  CBFormatChange(Self);
end;

procedure TFormTeeSeries.Button2Click(Sender: TObject);
begin
  EPercentFormat.Text:=TFormatEditor.Change(Self,EPercentFormat.Text);
  EPercentFormatChange(Self);
end;

procedure TFormTeeSeries.Button3Click(Sender: TObject);
begin
  TheSeries.Clear;
  CBDataSourcestyle.ItemIndex:=0;
  CBDataSourcestyleChange(Self);
end;

procedure TFormTeeSeries.CBShowInEditorClick(Sender: TObject);
begin
  TheSeries.ShowInEditor:=CBShowInEditor.Checked;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -