📄 psled.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "PSLED.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
static inline void ValidCtrCheck(TPSLED *)
{
new TPSLED(NULL);
}
//---------------------------------------------------------------------------
__fastcall TPSLED::TPSLED(TComponent* Owner)
: TGraphicControl(Owner)
{
Width = 20;
Height = 30;
FOnColor = clRed;
FOffColor = clSilver;
FFrameColor = clGray;
FCaption = "";
FOnOff = false;
}
//---------------------------------------------------------------------------
namespace Psled
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TPSLED)};
RegisterComponents("Beispiele", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetOnOff (const bool value)
{
if (FOnOff == value) return;
FOnOff = value;
Repaint ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetOnColor (const TColor OnColor)
{
FOnColor = OnColor;
Repaint ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetOffColor (const TColor OffColor)
{
FOffColor = OffColor;
Repaint ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetFrameColor (const TColor FrameColor)
{
FFrameColor = FrameColor;
Repaint ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetCaption (const AnsiString Caption)
{
FCaption = Caption;
Repaint ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetEnabled(bool Value)
{
TGraphicControl::SetEnabled (Value);
Invalidate ();
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::Paint (void)
{
int t1, t2, ledW, ledH, ledT, ledL;
Canvas->Font->Assign (Font);
t1 = Canvas->TextHeight (FCaption);
t2 = (t1 + 2) / 2;
ledW = Width - t2;
ledH = Height;
ledT = 2 * t2;
ledL = t2;
if (Enabled) Canvas->Brush->Color = (FOnOff)?FOnColor:FOffColor;
else Canvas->Brush->Color = FOffColor;
Canvas->Pen->Color = FFrameColor;
Canvas->Pen->Width = 1;
// Draw LED
Canvas->Ellipse (ledL, ledT, ledW - 1, ledH - 1);
// Draw LED Frame
Canvas->Pen->Width = 2;
Canvas->Pen->Color = clBtnHighlight;
Canvas->Arc (ledL + 1, ledT + 1, ledW - 1, ledH - 1, 0, ledT + ledH, ledL + ledW, 0);
Canvas->Pen->Color = cl3DDkShadow;
Canvas->Arc (ledL + 1, ledT + 1, ledW - 1, ledH - 1, ledL + ledW, 0, 0, ledT + ledH);
Canvas->Pen->Color = clWhite;
if (Enabled)
{
// Draw White LED Reflection
Canvas->Pen->Width = 2;
ledL += 5;
ledT += 5;
ledW -= 5;
ledH -= 5;
Canvas->Arc (ledL, ledT, ledW, ledH,
ledL + (ledW / 10), 0, 0, ledT + (ledH / 10));
}
// Draw Caption
Canvas->Font->Assign (Font);
t1 = Canvas->TextWidth (FCaption);
t2 = (Width - t1) / 2;
Canvas->Brush->Color = clBtnFace;
if (!Enabled)
{
Canvas->Brush->Style = bsClear;
Canvas->Font->Color = clHighlightText;
Canvas->TextOut (t2 + 1, 2, FCaption);
Canvas->Font->Color = clGrayText;
}
Canvas->TextOut (t2, 1, FCaption);
Canvas->Brush->Style = bsSolid;
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::Click(void)
{
if (!FIndicator)
{
if (FOnOff) FOnOff = false;
else FOnOff = true;
Invalidate ();
TGraphicControl::Click ();
if (FOnChange) FOnChange (this);
}
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::DblClick(void)
{
if (!FIndicator)
{
if (FOnOff) FOnOff = false;
else FOnOff = true;
Invalidate ();
TGraphicControl::Click ();
if (FOnChange) FOnChange (this);
}
}
//---------------------------------------------------------------------------
void __fastcall TPSLED::SetIndicator (bool val)
{
FIndicator = val;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -