delphi 访问在另一个单元的实现部分中定义的类型

vql8enpb  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(174)

我在 Delphi Firemonkey中对FMX.Calendar.Style进行子类化,以便为TCalendar组件添加更多的功能。我想添加“拖动选择”多天(一天范围)。我有一个粗略的工作原理证明。我在另一个单元中对FMX.Calendar.Style中的TStyledCalendar进行子类化。
为了提取选定的日期,我需要强制转换为TDayItem。问题是类型TDayItem在实现部分中定义,因此无法在其他单元中使用新类访问。
有办法访问它吗?

unit FMX.Calendar.Style;

interface

{$SCOPEDENUMS ON}

uses
  System.Classes, .., ..

type

{ TStyledCalendar }

  TStyledCalendar = class(TStyledPresentation)
  public const
    CountOfVisibleDays = 6 * 7;
..
..
..
  end;

implementation

uses
  System.SysUtils, .. ..

type
  TDayItem = class(TListBoxItem)
  private
    FDate: TDateTime;
  public
    property Date: TDateTime read FDate write FDate;
  end;

..

..
w8f9ii69

w8f9ii691#

不幸的是,一个单元根本无法访问另一个单元的implementation节中声明的类型(或变量,或常量)。只有在一个单元的interface节中声明的项才能被其他单元访问。一个单元的implementation节只能被它所属的单元访问。
在这种情况下,您唯一能做的就是将TDayItem的声明复制到您自己的单元中,然后根据需要将ListBox项类型转换为该类型。然后检查FMX的TDayItem声明,以了解每个新版本/补丁中的更改,以便相应地更新您的代码。

相关问题