⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psled.cpp

📁 用于开发Atmel的AVR系列单片机的GCC集成开发环境
💻 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 + -