home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sibylft1.zip
/
SAMPLES.DAT
/
SAMPLES
/
SEVENSEG
/
SEVEN.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-03-17
|
2KB
|
97 lines
unit Seven;
{***********************************************************************************
* *
* SpeedSoft Sibyl sample component "SevenSeg" *
* *
* This addon component implements a seven segment control. *
* After compilation you can add this component using Component|Install from *
* the main menu. Note that the resource script must also be compiled. *
* This component was written by Joerg Pleumann *
* *
***********************************************************************************}
interface
{$r Seven}
uses
Classes, Forms, Buttons, StdCtrls, Graphics;
type
TSevenSegDisplay = class(TControl)
private
FDigit: Byte;
FBitmaps: array[0..9] of TBitmap;
procedure SetDigit(NewDigit: Byte);
public
destructor Destroy; override;
procedure Redraw(const rec: TRect); override;
procedure SetupComponent; override;
procedure Show; override;
published
property Digit: Byte read FDigit write SetDigit;
end;
exports
TSevenSegDisplay, 'User', 'Seven.Bmp';
implementation
destructor TSevenSegDisplay.Destroy;
var
N: Integer;
begin
for N := 0 to 9 do FBitmaps[N].Free;
inherited Destroy;
end;
procedure TSevenSegDisplay.SetDigit(NewDigit: Byte);
begin
if (NewDigit >= 0) and (NewDigit <= 9) then
begin
FDigit := NewDigit;
Invalidate;
end;
end;
procedure TSevenSegDisplay.SetupComponent;
var
N: Integer;
begin
inherited SetupComponent;
Caption := 'SevenSegDisplay';
Name := Caption;
Width := 16;
Height := 24;
for N := 0 to 9 do
begin
FBitmaps[N].Create(Self);
FBitmaps[N].LoadFromResourceName('Digit'+tostr(N));
end;
end;
procedure TSevenSegDisplay.Show;
begin
FBitmaps[FDigit].RealizePalette(Canvas);
inherited Show;
end;
{$HINTS OFF}
procedure TSevenSegDisplay.Redraw(const rec: TRect);
begin
if (FDigit >= 0) and (FDigit <= 9) then
Canvas.StretchDraw(0, 0, Width, Height, FBitmaps[FDigit]);
end;
{$HINTS ON}
begin
RegisterClasses([TSevenSegDisplay]);
end.