2012-12-09 2 views
1

TJVSegmentedLEDDisplay 컨트롤 (JVCL에서 제공)을 타이머로 사용하고 있습니다. 따라서 5 개 장소, 2 시간, 2 분, 2 자리 숫자 (예 : 12:34)로 구성됩니다. 몇 시간 동안 실험하고 검색 한 후에도 프로그래밍 방식으로 각 개별 숫자에 액세스하는 방법을 알 수 없습니다.Delphi에서 JVSegmentedLEDDisplay 컨트롤의 개별 숫자에 액세스

LEDControl.Digits[Index].Text 

...와 같아야합니다. 그러나 분명히 그렇지 않습니다.

의견이 있으십니까?

답변

1

접근하려고 시도한 속성은 Text 속성을 직접 수정하는 것을 제외하고는 실수로 보호됩니다.이 속성은별로 좋지 않습니다. 방법을 찾을 수 없습니다. 개별 세그먼트 값을 변경하십시오. 그러나이 보호 된 액세스를 해결할 수 있습니다. 인터 포저 클래스에 의해 :

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. 
+0

저는 어떻게 반응합니까? – TLama

+0

죄송합니다! 지금까지는 확인할 수 없었습니다. "TJvCustomSegmentedLEDDigit '에는'Text '라는 멤버가 포함되어 있지 않지만 테스트 코드를 작성하는 동안 JvSegmentedLEDDisplay.Text에 할당하기 전에 TJvSegmentedLEDDigits를 만들지 않았 음을 발견했습니다. . 당신이 할당하고자하는 문자열의 각 문자에 대해 하나의 TJvSegmentedLEDDigit를 생성한다면, TJvSegmentedLEDDisplay.Text를 설정할 수있다. – Brian

+0

그렇다면 당신은 나와 다른 버전의 JVCL이 있어야한다. 물론 언급 된 'TJvSegmentedLEDDisplay.Text' 속성도 있지만 한자리 숫자로 텍스트를 설정할 수있는 편한 방법이 아닙니다 – TLama

관련 문제