首页 > 其他分享 >lazarus 3.4+fpc trunk编译tachart控件出错

lazarus 3.4+fpc trunk编译tachart控件出错

时间:2024-08-22 14:26:18浏览次数:9  
标签:控件 fpc nil PointStart FSeries 3.4 ADest tachart APoint

lazarus 3.4+fpc trunk编译tachart控件出错
原因:
最新的fpc禁止访问private引起的
修改方法:
1、打开lazarus\components\tachart\tadatatools.pas
将function TDataPointDistanceTool.FindRef(

APoint: TPoint; AMode: TDataPointMode; ADest: TDataPointTool.TPointRef;
AOtherEndSeries: TBasicChartSeries): Boolean;

修改为以下代码:
function TDataPointDistanceTool.FindRef(
  APoint: TPoint; AMode: TDataPointMode; ADest: TDataPointTool.TPointRef;
  AOtherEndSeries: TBasicChartSeries): Boolean;
begin
  FSeries := nil;
  if AMode in [dpmSnap, dpmLock] then begin
    FindNearestPoint(APoint);
    ADest.GraphPos := FNearestGraphPoint;
    ADest.Index := PointIndex;
    if not SameTransformations(FSeries, AOtherEndSeries) then
      FSeries := nil;
  end;
  ADest.Series := FSeries;
  if FSeries = nil then
    ADest.GraphPos:=FChart.ImageToGraph(APoint);
  Result := (FSeries <> nil) or (AMode <> dpmLock);
end;

将procedure TDataPointDistanceTool.MouseDown(APoint: TPoint):

PointStart.FSeries := nil;

修改为:

PointStart.Series := nil;
procedure TDataPointDistanceTool.MouseDown(APoint: TPoint);
begin
  if IsActive then exit;
  if dpdoPermanent in Options then
    DoHide(GetCurrentDrawer);
  PointStart.Series := nil;
  if FindRef(APoint, DataPointModeStart, PointStart, nil) then
    Activate;
  PointEnd.Assign(PointStart);
  Handled;
end;

2、lazarus\components\tachart\tatools.pas
修改为以下代码:

  TDataPointTool = class(TChartTool)
  public
  type
    TPointRef = class
    private
      FGraphPos: TDoublePoint;
      FIndex: Integer;
      FSeries: TBasicChartSeries;
      procedure SetGraphPos(const ANewPos: TDoublePoint);
    public
      procedure Assign(ASource: TPointRef);
      function AxisPos(ADefaultSeries: TBasicChartSeries = nil): TDoublePoint;
      property GraphPos: TDoublePoint read FGraphPos write SetGraphPos;
      property Index: Integer read FIndex write FIndex;
      property Series: TBasicChartSeries read FSeries write FSeries;
    end;

  strict private

修改后重新编译就可以。

标签:控件,fpc,nil,PointStart,FSeries,3.4,ADest,tachart,APoint
From: https://www.cnblogs.com/qiufeng2014/p/18373774

相关文章

  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 界面控件DevExpress WinForms中文教程:Data Grid(数据网格)简介(二)
    DevExpressWinFormsDataGrid是一个高性能的UI组件,由DirectX渲染引擎提供支持。数据网格(GridControl)提供了一个灵活的基于视图的体系结构,包括许多数据塑造和UI自定义特性,数据网格可以显示和编辑来自任何大小和复杂数据源的数据。P.S:DevExpressWinForms拥有180+组件和UI库,能......
  • 表格控件:计算引擎、报表、集算表
    近日,葡萄城正式发布了SpreadJS最新版本V17.1,为前端表格控件市场带来了一系列令人瞩目的新特性和功能增强。本次更新旨在进一步提升用户在计算引擎、报表生成和分析等方面的体验,为各行业的开发者提供更强大的工具支持。主要更新亮点工作薄增强居右对齐将样式的textDirection......
  • 界面控件DevExpress Blazor v24.2路线图预览——支持.NET 9、新增桑基图等
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。本文中包含了DevExpressBlazorv24.2官方发布的当前/预计的开发计划,请注意......
  • 3142:练23.4 首字母(C、C++、python)
    3142:练23.4 首字母信息学奥赛一本通-编程启蒙(C++版)在线评测系统C源码:#include<stdio.h>#include<stdlib.h>intmain(){ charb; scanf("%c",&b); if(b=='a'){ printf("apple"); } elseif(b=='b'){ printf("ba......
  • 通过代码添加的控件的事件如何编写?
    0背景这两天在重新复习事件,比如Winform控件的事件,利用vs很方便地实现。比如:想要在窗体加载时,修改窗口的标题;我们只需要双击Form1的标题栏即可;vs便会给我们生成如下代码,且光标自动定位到方法体中:privatevoidForm1_Load(objectsender,EventArgse){}然后我......
  • Delphi 的 TMS 控件安装方法
    * 参考:tmsxdataaurliussparkle的手工安装(XE7)--------------------------------------------------------------------------------------------说明:下述安装方法的意思是:1)将所有包项目的编译结果放在 /Bin目录中,并将/Bin路径,放入系统变量Path的查找路径中。因编译......
  • winform工具箱安装其他控件
     下载对应的控件dll文件一,新建Winform项目或者打开您已有的Winform项目,选择窗体,显示窗体设计器界面,点击“视图”-“工具箱”,显示工具箱,如下图: 在工具箱,点击鼠标右键,添加选项卡 输入对应控件名 在工具箱中选中选中DEMO选项卡。 安装方法一:根据提示“此组中没有可......
  • 界面控件DevExpress ASP.NET Web Forms v24.1最新版本系统环境配置要求
    本文档包含有关安装和使用 DevExpressASP.NETWebForms控件的系统要求的信息。点击获取DevExpressv24.1正式版.NETFrameworkDevExpressASP.NETWebForms控件支持以下.NET框架版本。如果您需要DevExpress产品的早期版本,请咨询“在线客服”获取。IDEDevExpressASP.......
  • CentOS 7.9 运行某些软件时缺少GLIBCXX_3.4.21、GLIBC_2.28解决办法
    dotnet:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.20'notfound(requiredbydotnet)dotnet:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.21'notfound(requiredbydotnet)  这可能是因为CentOS版本太低或者缺少libstdc++.so.6 版本 GLIBCXX_3.4.20 和 GLIB......