Доступ к отдельной цифре в элементе управления JVSegmentedLEDDisplay в Delphi

У меня есть TJVSegmentedLEDDisplay контроль (из JVCL), который я хочу использовать в качестве таймера. Соответственно, у него пять мест: два часа, два минуты и двоеточие между двумя числами (т. Е. 12:34). После нескольких часов экспериментов и поисков я все еще не могу понять, как программно получить доступ к каждой отдельной цифре. Мне кажется, что это должно быть что-то вроде:

LEDControl.Digits[Index].Text

... но, очевидно, это не так.

Какие-нибудь мысли?

1 ответ

Решение

TJvCustomSegmentedLEDDigit.Text свойство, к которому вы пытались получить доступ, защищено ошибкой, которую я бы сказал, с тех пор, кроме прямой модификации Text свойство, которое не очень удобно для этого, я не мог найти способ, как изменить значения отдельных сегментов. Однако вы можете обойти этот защищенный доступ, например, с помощью класса Interposer:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, JvExControls, JvSegmentedLEDDisplay;

type
  TLEDDigit = class(JvSegmentedLEDDisplay.TJvCustomSegmentedLEDDigit);

type
  TForm1 = class(TForm)
    Button1: TButton;
    JvSegmentedLEDDisplay1: TJvSegmentedLEDDisplay;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TLEDDigit(JvSegmentedLEDDisplay1.Digits[0]).Text := '1';
  TLEDDigit(JvSegmentedLEDDisplay1.Digits[1]).Text := '2';
end;

end.
Другие вопросы по тегам