[lazarus] LED Component
Mattias Gaertner
nc-gaertnma at netcologne.de
Thu Feb 6 01:29:54 EST 2003
On Thu, 6 Feb 2003 10:35:58 +0530
Jay Dubal <jay.dubal at intergold.net> wrote:
> Hi there,
>
> I made a LED component which could display digits 0 - 9
> works
> well on Delphi and I modified it to work on Lazarus. The unit got compiled
> and the component is on the pallet BUT.... when I drop it on Form not only
> Lazarus but the whole XWindows HANGSS!!!!!
TCanvas.Refresh was not implemented yet and therefore you used
TControl.Refresh and created an infinite loop. I added TCanvas.Refresh to
the LCL for Delphi compatibility. But you don't need the calls anyway, just
delete them.
Mattias
>
> I am sendin the atachment and I request to inspect the unit
> before compiling. If the attachemnt is not there then here is the code for
> it
>
> *************************************************************************
> **** START OF CODE ...
>
>
> {************************************************************************
> Author : Jay Dubal
> version : 2.0
> E-mail : delphisoft at hotpop.com, jaydubal at hotmail.com
> URL : http://delphisoft.topcities.com
> copyleft® DelphiSoft
>
> This is a Free! component. You can modify it as you like
> and you don'nt need to inform me. Use it at my risk as
> it is fully tested and works perfectly (Delphi 6.0)
>
> _a__
> | |b
> f | |
> -g-- The basic 7 segment Light Emitting Diode (LED)
> e | | c This version 2.0 has More real LED shape
> | |
> -d--
>
> *************************************************************************
> *} unit JDLed;
>
> {$mode objfpc}
>
> interface
>
> uses
> SysUtils, Classes, Controls, Graphics, Dialogs,
> LMessages, LResources, Forms, StdCtrls;
>
> type
> TJDLed = class(TGraphicControl)
> private
> procedure SetLedDigit(value : integer);
> procedure SetLedThick(value: integer);
> { Private declarations }
> protected
> FDigit : integer;
> FThick : integer;
> procedure Paint; override;
> { Protected declarations }
> public
> constructor Create(AOwner: TComponent); override;
> destructor Destroy; override;
> { Public declarations }
> published
> property Digit : integer read FDigit write SetLedDigit;
> property Thick : integer read FThick write SetLedThick;
> { Published declarations }
> end;
>
> implementation
>
> constructor TJDLed.Create(AOwner: TComponent);
> begin
> inherited Create(AOwner); { always call the inherited constructor }
> FDigit := 1;
> FThick := 5;
> Height := 90;
> Width := 50;
> with Constraints do
> begin
> MinHeight := 30;
> MinWidth := 15;
> end;
> end;
>
> destructor TJDLed.Destroy;
> begin
> inherited Destroy;
> end;
>
>
> procedure TJDLed.Paint;
> var
> X1,X2,X3,X4,X5,X6,X7,Z,Z1 : integer;
> begin
> X1 := self.Height;
> X2 := self.Width;
> X3 := self.FThick;
> Z := abs(X3 div 2);
> Z1 := abs(self.Height div 2);
> X4 := Z1 - Z;
> X5 := Z1 + Z;
> X6 := Z1 - X3 - Z;
> X7 := Z1 + X3 + Z;
>
> inherited;
> with Canvas do
> begin
> Refresh;
> Brush.Color := clBlack;
> Pen.Color := clBlack;
> Refresh;
>
> Rectangle(0,0,self.Width,self.Height);
> Brush.Color := clRed;
> Pen.Color := clRed;
> Refresh;
> case FDigit of
>
> 0:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,X5),Point(X3,X7),Point(X3,X1-X3-Z),Point(0,X1-Z)]);
> // e Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]);
> // f
> end;
> 1:
> begin
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> end;
> 2:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,X5),Point(X3,X7),Point(X3,X1-X3-Z),Point(0,X1-Z)]);
> // e Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z
> div 4)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 3:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z div
> 4)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 4:
> begin
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]); // f
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z div
> 2)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 2)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 2)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 2)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 5:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]); // f
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z div
> 4)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 6:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,X5),Point(X3,X7),Point(X3,X1-X3-Z),Point(0,X1-Z)]);
> // e Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]);
> // f Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z
> div 4)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 7:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> end;
> 8:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,X5),Point(X3,X7),Point(X3,X1-X3-Z),Point(0,X1-Z)]);
> // e Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]);
> // f
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z div
> 4)),Point(X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]);
> // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> 9:
> begin
> Polygon([Point(Z,0),Point(X2-Z,0),Point(X2-X3-Z,X3),Point(X3 +
> Z,X3)]); // a
> Polygon([Point(X2-X3,X3+Z),Point(X2,Z),Point(X2,X4),Point(X2-
> X3,X6)]); // b
> Polygon([Point(X2-X3,X7),Point(X2,X5),Point(X2,X1-Z),Point(X2-X3,X1
> -X3-
> Z)]); // c
> Polygon([Point(X3+Z,X1-X3),Point(X2-X3-Z,X1-X3),Point(X2-Z,X1),Poin
> t(X3-
> Z,X1)]); // d
> Polygon([Point(0,Z),Point(X3,X3+Z),Point(X3,X6),Point(0,X4)]); // f
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1-Z - abs(Z div
> 4)),Point
> (X2-X3-Z,Z1-Z - abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g1
> Polygon([Point(X3 - abs(Z div 2),Z1),Point(X3+Z,Z1+Z + abs(Z div
> 4)),Point
> (X2-X3-Z,Z1+Z + abs(Z div 4)),Point(X2-X3 + abs(Z div 2),Z1)]); // g2
> end;
> end;
> Refresh;
> end;
>
> end;
>
>
> procedure TJDLed.SetLedDigit(value: integer);
> begin
> if (value >= 0) and (value <= 9) then
> begin
> FDigit := value;
> Paint;
> end;
> end;
>
> procedure TJDLed.SetLedThick(value: integer);
> begin
> if (value > 2) then
> begin
> FThick := Value;
> Paint;
> end;
> end;
>
> initialization
> {$I jdledicon.lrs}
>
> end.
>
> END OF CODE.....
> *************************************************************************
> ****
>
>
> Jay Dubal
> delphisoft.topcities.com
More information about the Lazarus
mailing list