//
Unit Ads_Math;
{Copyright(c)2016 Advanced Delphi Systems
Richard Maley
Advanced Delphi Systems
12613 Maidens Bower Drive
Potomac, MD 20854 USA
phone 301-840-1554
dickmaley@advdelphisys.com
The code herein can be used or modified by anyone. Please retain references
to Richard Maley at Advanced Delphi Systems. If you make improvements to the
code please send your improvements to dickmaley@advdelphisys.com so that the
entire Delphi community can benefit. All comments are welcome.
}
(*UnitIndex Master Index Implementation Section Download UnitsDescription: ads_Math.pas This unit contains the following routines.
Max Min Min_I NumVal Pi_Real Rand RandomInteger SetIntegerHiAndLo TEditKeyFilter.OnlyAToZ TEditKeyFilter.OnlyNumbers TEditKeyFilter.OnlyNumbersAbsolute TPanel_Cmp_Sec_ads.ResizeShadowLabel
*)
Interface
Uses
SysUtils, ExtCtrls, StdCtrls, Ads_Strg, Ads_Misc;
Function SetIntegerHiAndLo(HiValue,LoValue: Byte): Integer;
{!~ Returns the larger of two numbers}
Function Max(Number1, Number2: Single): Single;
{!~ Returns the smaller of two numbers}
Function Min(Number1, Number2: Single): Single;
{!~
Returns the smaller of two integers
}
Function Min_I(Number1, Number2: Integer): Integer;
{!~ Converts a string to an Extended floating point number}
Function NumVal(InputString: String): Extended;
{!~ Returns the constant pi as a real number}
Function Pi_Real: Real;
{!~ Returns A PseudoRandom Number Between 0 And 1}
Function Rand: Integer;
{!~ Returns A Random Number}
Function RandomInteger(RandMin, RandMax: Integer): Integer;
implementation
Type
TPanel_Cmp_Sec_ads = class(TPanel)
Public
procedure ResizeShadowLabel(Sender: TObject);
End;
//Unit Description UnitIndex Master Index
procedure TPanel_Cmp_Sec_ads.ResizeShadowLabel(
Sender : TObject);
Var
PH, PW : Integer;
LH, LW : Integer;
begin
PH := TPanel(Sender).Height;
PW := TPanel(Sender).Width;
LH := TLabel(Controls[0]).Height;
LW := TLabel(Controls[0]).Width;
TLabel(Controls[0]).Top := ((PH-LH) div 2)-3;
TLabel(Controls[0]).Left := ((Pw-Lw) div 2)-3;
end;
Type
TEditKeyFilter = Class(TEdit)
Published
{!~ Throws away all keys except 0-9,-,+,.}
Procedure OnlyNumbers(Sender: TObject; var Key: Char);
{!~ Throws away all keys except 0-9}
Procedure OnlyNumbersAbsolute(Sender: TObject; var Key: Char);
{!~ Throws away all keys except a-z and A-Z}
Procedure OnlyAToZ(Sender: TObject; var Key: Char);
End;
{!~ Throws away all keys except 0-9,-,+,.}
//Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyNumbers(Sender: TObject; var Key: Char);
Begin
KeyPressOnlyNumbers(Key);
End;
{!~ Throws away all keys except 0-9}
//Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyNumbersAbsolute(Sender: TObject; var Key: Char);
Begin
KeyPressOnlyNumbersAbsolute(Key);
End;
{!~ Throws away all keys except a-z and A-Z}
//Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyAToZ(Sender: TObject; var Key: Char);
Begin
KeyPressOnlyAToZ(Key);
End;
{!~ Returns the larger of two numbers}
//Unit Description UnitIndex Master Index
Function Max(Number1, Number2: Single): Single;
Begin
If Number1 > Number2 Then
Begin
Result := Number1;
End
Else
Begin
Result := Number2;
End;
End;
{!~ Returns the smaller of two numbers}
//Unit Description UnitIndex Master Index
Function Min(Number1, Number2: Single): Single;
Begin
If Number1 < Number2 Then
Begin
Result := Number1;
End
Else
Begin
Result := Number2;
End;
End;
{!~
Returns the smaller of two integers
}
//Unit Description UnitIndex Master Index
Function Min_I(Number1, Number2: Integer): Integer;
Begin
If Number1 < Number2 Then
Begin
Result := Number1;
End
Else
Begin
Result := Number2;
End;
End;
{!~ Converts a string to an Extended floating point number}
//Unit Description UnitIndex Master Index
Function NumVal(InputString: String): Extended;
Begin
Result := 0;
InputString := NumbersOnly(InputString);
Try
Result := StrToFloat(InputString);
Except
End;
End;
{!~ Returns the constant pi as a real number}
//Unit Description UnitIndex Master Index
Function Pi_Real: Real;
Begin
Result := Pi;
End;
{!~ Returns A PseudoRandom Number Between 0 And 1}
//Unit Description UnitIndex Master Index
Function Rand: Integer;
Begin
Result := RandomInteger(0,1);
End;
{!~ Returns A Random Number}
//Unit Description UnitIndex Master Index
Function RandomInteger(RandMin, RandMax: Integer): Integer;
Var
RandRange: Integer;
RandValue: Integer;
Begin
If RandMax <= RandMin Then
Begin
Result := RandMin;
Exit;
End;
Randomize;
RandRange := RandMax-RandMin;
RandValue := Random(RandRange);
Result := RandValue + RandMin;
End;
//Unit Description UnitIndex Master IndexFunction SetIntegerHiAndLo(HiValue,LoValue: Byte): Integer; Var inLo : Integer; inHi : Integer; inResult : Integer; Begin inLo := LoValue; inHi := HiValue; inResult := (256*inHi)+inLo; Result := inResult; End; End. //