Доступ к отдельной цифре в элементе управления 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.