lazarus/lcl/spin.pp
tombo 5bcdc4373e LCL: - derived T(Float)SpinEdit from TCustomEdit to remove redundant code
- removed obsolete TSpinEdit.ClimbRate

git-svn-id: trunk@11205 -
2007-05-26 09:57:11 +00:00

186 lines
5.3 KiB
ObjectPascal

{
/***************************************************************************
Spin.pp
--------
Initial Revision : Fri Apr 23 1999 10:29am
Shane Miller
mailing list:lazarus@miraclec.com
***************************************************************************/
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit Spin;
{$mode objfpc}{$H+}
interface
uses
Classes, Controls, SysUtils, LCLType, LMessages, ClipBrd, StdCtrls;
type
{ TCustomFloatSpinEdit }
TCustomFloatSpinEdit = class(TCustomEdit)
private
FIncrement: Single;
FDecimals: Integer;
FMaxValue: Single;
FMinValue: Single;
FValue: Single;
FValueEmpty: Boolean;
FUpdatePending: Boolean;
FValueChanged: Boolean;
function MaxValueIsStored: Boolean;
function MinValueIsStored: Boolean;
procedure SetMaxValue(const AValue: Single);
procedure SetMinValue(const AValue: Single);
procedure SetValueEmpty(const AValue: Boolean);
procedure UpdateControl;
function ValueIsStored: Boolean;
protected
function RealGetText: TCaption; override;
procedure TextChanged; override;
procedure SetDecimals(ADecimals: Integer);
function GetValue: Single;
procedure SetValue(const AValue: Single);
procedure SetIncrement(const AIncrement: Single);
procedure InitializeWnd; override;
procedure FinalizeWnd; override;
procedure Loaded; override;
public
constructor Create(TheOwner: TComponent); override;
public
property DecimalPlaces: Integer read FDecimals write SetDecimals default 2;
property Increment: Single read FIncrement write SetIncrement default 1;
property MinValue: Single read FMinValue write SetMinValue default 0;
property MaxValue: Single read FMaxValue write SetMaxValue default 100;
property Value: Single read GetValue write SetValue default 0;
property ValueEmpty: Boolean read FValueEmpty write SetValueEmpty default False;
end;
{ TFloatSpinEdit }
TFloatSpinEdit = class(TCustomFloatSpinEdit)
published
property Align;
property Anchors;
property BorderSpacing;
property Constraints;
property DecimalPlaces;
property Enabled;
property Increment;
property MaxValue;
property MinValue;
property OnChange;
property OnChangeBounds;
property OnClick;
property OnEditingDone;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabStop;
property TabOrder;
property Value;
property Visible;
end;
{ TCustomSpinEdit }
TCustomSpinEdit = class(TCustomFloatSpinEdit)
private
function GetIncrement: integer;
function GetMaxValue: integer;
function GetMinValue: integer;
function GetValue: integer;
procedure SetIncrement(const AValue: integer);
procedure SetMaxValue(const AValue: integer);
procedure SetMinValue(const AValue: integer);
procedure SetValue(const AValue: integer);
public
constructor Create(TheOwner: TComponent); override;
public
property Value: integer read GetValue write SetValue default 0;
property MinValue: integer read GetMinValue write SetMinValue default 0;
property MaxValue: integer read GetMaxValue write SetMaxValue default 100;
property Increment: integer read GetIncrement write SetIncrement default 1;
end;
{ TSpinEdit }
TSpinEdit = class(TCustomSpinEdit)
published
property Align;
property Anchors;
property AutoSize;
property BorderSpacing;
property Constraints;
property Enabled;
property Increment;
property MaxValue;
property MinValue;
property OnChange;
property OnChangeBounds;
property OnClick;
property OnEditingDone;
property OnEnter;
property OnExit;
Property OnKeyDown;
property OnKeyPress;
Property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabStop;
property TabOrder;
property Value;
property Visible;
end;
procedure Register;
implementation
uses
WSSpin;
procedure Register;
begin
RegisterComponents('Misc', [TSpinEdit, TFloatSpinEdit]);
end;
{$I spinedit.inc}
end.