lazarus-ccr/components/orpheus/ovcbcalc.pas
2007-01-16 02:17:08 +00:00

1511 lines
35 KiB
ObjectPascal

{*********************************************************}
{* OVCBCALC.PAS 4.06 *}
{*********************************************************}
{* ***** BEGIN LICENSE BLOCK ***** *}
{* Version: MPL 1.1 *}
{* *}
{* The contents of this file are subject to the Mozilla Public License *}
{* Version 1.1 (the "License"); you may not use this file except in *}
{* compliance with the License. You may obtain a copy of the License at *}
{* http://www.mozilla.org/MPL/ *}
{* *}
{* Software distributed under the License is distributed on an "AS IS" basis, *}
{* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License *}
{* for the specific language governing rights and limitations under the *}
{* License. *}
{* *}
{* The Original Code is TurboPower Orpheus *}
{* *}
{* The Initial Developer of the Original Code is TurboPower Software *}
{* *}
{* Portions created by TurboPower Software Inc. are Copyright (C)1995-2002 *}
{* TurboPower Software Inc. All Rights Reserved. *}
{* *}
{* Contributor(s): *}
{* *}
{* ***** END LICENSE BLOCK ***** *}
{$I OVC.INC}
{$B-} {Complete Boolean Evaluation}
{$I+} {Input/Output-Checking}
{$P+} {Open Parameters}
{$T-} {Typed @ Operator}
{.W-} {Windows Stack Frame}
{$X+} {Extended Syntax}
{$J+} {Writable constants}
unit ovcbcalc;
{-base edit field class w/ label and borders}
interface
uses
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LMessages, LclType, MyMisc, {$ENDIF}
Buttons, Classes, Controls, ExtCtrls, Forms, Graphics, Menus,
{$IFDEF VERSION4}{$IFNDEF LCL} MultiMon, {$ENDIF}{$ENDIF}
StdCtrls, SysUtils, OvcBase, OvcVer, OvcMisc,
OvcEditF, OvcBordr, OvcEdClc, ovcCalc, ovcEdPop;
const
BorderMsgClose = WM_USER+10;
BorderMsgOpen = WM_USER+11;
type
TOvcPopupEvent =
procedure(Sender : TObject) of object;
TOvcPopupAnchor = (paLeft, paRight);
TOvcBorderEdPopup = class;
TOvcNumberEditEx = class(TOvcNumberEdit)
protected
BorderParent : TOvcBorderEdPopup;
end;
TOvcBorderEdPopup = class(TOvcBorderParent)
protected {private}
{new property variables}
FEdit : TOvcCustomEdit;
FButton : TOvcEdButton;
FButtonGlyph : TBitmap;
FController : TOvcController;
FPopupActive : Boolean;
FPopupAnchor : TOvcPopupAnchor;
FOnPopupClose : TOvcPopupEvent;
FOnPopupOpen : TOvcPopupEvent;
FShowButton : Boolean;
protected
{property methods}
function GetButtonGlyph : TBitmap;
procedure SetButtonGlyph(Value : TBitmap);
procedure SetShowButton(Value : Boolean);
{internal methods}
function GetButtonWidth : Integer;
{$IFDEF VERSION4}
procedure CMDialogKey(var Msg : TCMDialogKey);
message CM_DIALOGKEY;
{$ENDIF}
procedure CreateParams(var Params : TCreateParams);
override;
procedure CreateWnd;
override;
function GetButtonEnabled : Boolean;
dynamic;
procedure GlyphChanged;
dynamic;
procedure Loaded;
override;
procedure OnMsgClose(var M : TMessage);
message BorderMsgClose;
procedure OnMsgOpen(var M : TMessage);
message BorderMsgOpen;
public
constructor Create(AOwner : TComponent);
override;
destructor Destroy;
override;
procedure PopupClose(Sender : TObject);
dynamic;
procedure PopupOpen;
dynamic;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
override;
procedure SetEditControl(EC : TOvcCustomEdit); override;
property Canvas;
property PopupActive : Boolean
read FPopupActive;
property PopupAnchor : TOvcPopupAnchor
read FPopupAnchor
write FPopupAnchor;
published
property ButtonGlyph : TBitmap
read GetButtonGlyph
write SetButtonGlyph;
end;
TOvcBorderedNumberEdit = class(TOvcBorderEdPopup)
protected
{base property values}
FOvcEdit : TOvcNumberEditEx;
{$IFDEF VERSION4}
{$IFNDEF LCL}
FBiDiMode : TBiDiMode;
{$ENDIF}
FConstraints : TSizeConstraints;
FParentBiDiMode: Boolean;
FDragKind : TDragKind;
{$ENDIF}
FAbout : string;
{$IFNDEF LCL}
FAutoSelect : Boolean;
{$ENDIF}
FAutoSize : Boolean;
FBorderStyle : TBorderStyle;
FCharCase : TEditCharCase;
FController : TOvcController;
FCursor : TCursor;
FDragCursor : TCursor;
FDragMode : TDragMode;
FEnabled : Boolean;
FFont : TFont;
FHeight : integer;
{$IFNDEF LCL}
FHideSelection : Boolean;
FImeMode : TImeMode;
{$ENDIF}
FImeName : string;
FMaxLength : Integer;
{$IFNDEF LCL}
FOEMConvert : Boolean;
{$ENDIF}
FParentFont : Boolean;
FParentShowHint: Boolean;
FPasswordChar : Char;
FPopupMenu : TPopupMenu;
FReadOnly : Boolean;
FShowHint : Boolean;
FTabOrder : TTabOrder;
FVisible : Boolean;
FWidth : integer;
{events}
FOnChange : TNotifyEvent;
FOnClick : TNotifyEvent;
FOnDblClick : TNotifyEvent;
FOnDragDrop : TDragDropEvent;
FOnDragOver : TDragOverEvent;
FOnEndDrag : TEndDragEvent;
FOnEnter : TNotifyEvent;
FOnExit : TNotifyEvent;
FOnKeyDown : TKeyEvent;
FOnKeyPress : TKeyPressEvent;
FOnKeyUp : TKeyEvent;
FOnMouseDown : TMouseEvent;
FOnMouseMove : TMouseMoveEvent;
FOnMouseUp : TMouseEvent;
FOnStartDrag : TStartDragEvent;
FAllowIncDec : Boolean;
FCalculator : TOvcCalculator;
{internal variables}
PopupClosing : Boolean;
HoldCursor : TCursor;
WasAutoScroll : Boolean;
{base property methods}
{$IFDEF VERSION4}
{$IFNDEF LCL}
function GetBiDiMode : TBiDiMode;
{$ENDIF}
function GetDragKind : TDragKind;
{$IFNDEF LCL}
function GetParentBiDiMode : Boolean;
{$ENDIF}
{$IFNDEF LCL}
procedure SetBiDiMode(Value : TBiDiMode); override;
{$ENDIF}
procedure SetDragKind(Value : TDragKind);
{$IFNDEF LCL}
procedure SetParentBiDiMode(Value : Boolean); override;
{$ENDIF}
{$ENDIF}
function GetAbout : string;
{$IFNDEF LCL}
function GetAutoSelect : Boolean;
{$ENDIF}
function GetAutoSize : Boolean;
function GetCharCase : TEditCharCase;
function GetController : TOvcController;
function GetCursor : TCursor;
function GetDragCursor : TCursor;
function GetDragMode : TDragMode;
function GetEditEnabled : Boolean;
function GetFont : TFont;
{$IFNDEF LCL}
function GetHideSelection : Boolean;
function GetImeMode : TImeMode;
function GetImeName : string;
{$ENDIF}
function GetMaxLength : Integer;
{$IFNDEF LCL}
function GetOEMConvert : Boolean;
{$ENDIF}
function GetParentShowHint : Boolean;
function GetPasswordChar : Char;
function GetReadOnly : Boolean;
function GetEditShowButton : Boolean;
function GetParentFont : Boolean;
function GetEditParentShowHint : Boolean;
function GetOnChange : TNotifyEvent;
function GetOnClick : TNotifyEvent;
function GetOnDblClick : TNotifyEvent;
function GetOnDragDrop : TDragDropEvent;
function GetOnDragOver : TDragOverEvent;
function GetOnEndDrag : TEndDragEvent;
function GetOnKeyDown : TKeyEvent;
function GetOnKeyPress : TKeyPressEvent;
function GetOnKeyUp : TKeyEvent;
function GetOnMouseDown: TMouseEvent;
function GetOnMouseMove: TMouseMoveEvent;
function GetOnMouseUp : TMouseEvent;
function GetOnPopupClose : TOvcPopupEvent;
function GetOnPopupOpen : TOvcPopupEvent;
function GetPopupAnchor : TOvcPopupAnchor;
procedure SetAbout(const Value : string);
{$IFNDEF LCL}
procedure SetAutoSelect(Value : Boolean);
{$ENDIF}
procedure SetAutoSize(Value : Boolean); {$IFDEF VERSION6}{$IFNDEF LCL} override;{$ENDIF}{$ENDIF}
procedure SetCharCase(Value : TEditCharCase);
procedure SetCursor(Value : TCursor);
procedure SetDragCursor(Value : TCursor);
procedure SetEditController(Value : TOvcController);
procedure SetEditDragMode(Value : TDragMode);
procedure SetEditEnabled(Value : Boolean);
procedure SetFont(Value : TFont);
{$IFNDEF LCL}
procedure SetHideSelection(Value : Boolean);
procedure SetImeMode(Value : TImeMode);
procedure SetImeName(const Value : string);
{$ENDIF}
procedure SetMaxLength(Value : Integer);
{$IFNDEF LCL}
procedure SetOEMConvert(Value : Boolean);
{$ENDIF}
procedure SetParentShowHint(Value : Boolean);
procedure SetPasswordChar(Value : Char);
procedure SetReadOnly(Value : Boolean);
procedure SetEditShowButton(Value : Boolean);
procedure SetOnChange(Value : TNotifyEvent);
procedure SetOnClick(Value : TNotifyEvent);
procedure SetOnDblClick(Value : TNotifyEvent);
procedure SetOnDragDrop(Value : TDragDropEvent);
procedure SetOnDragOver(Value : TDragOverEvent);
procedure SetOnEndDrag(Value : TEndDragEvent);
procedure SetOnKeyDown(Value : TKeyEvent);
procedure SetOnKeyPress(Value : TKeyPressEvent);
procedure SetOnKeyUp(Value : TKeyEvent);
procedure SetOnMouseDown(Value : TMouseEvent);
procedure SetOnMouseMove(Value : TMouseMoveEvent);
procedure SetOnMouseUp(Value : TMouseEvent);
procedure SetOnPopupClose(Value : TOvcPopupEvent);
procedure SetOnPopupOpen(Value : TOvcPopupEvent);
procedure SetPopupAnchor(Value : TOvcPopupAnchor);
{property methods}
function GetAsFloat : Double;
function GetAsInteger : LongInt;
function GetAsString : string;
function GetPopupColors : TOvcCalcColors;
function GetPopupDecimals : Integer;
function GetPopupFont : TFont;
function GetPopupHeight : Integer;
function GetPopupWidth : Integer;
procedure SetAsFloat(Value : Double);
procedure SetAsInteger(Value : LongInt);
procedure SetAsString(const Value : string);
procedure SetPopupColors(Value : TOvcCalcColors);
procedure SetPopupDecimals(Value : Integer);
procedure SetPopupFont(Value : TFont);
procedure SetPopupHeight(Value : Integer);
procedure SetPopupWidth(Value : Integer);
procedure SetParentFont(Value : Boolean);
procedure SetEditParentShowHint(Value : Boolean);
protected
procedure GlyphChanged;
override;
public
constructor Create(AOwner : TComponent);
override;
destructor Destroy; override;
property AsInteger : LongInt
read GetAsInteger
write SetAsInteger;
property AsFloat : Double
read GetAsFloat
write SetAsFloat;
property AsString : string
read GetAsString
write SetAsString;
property Calculator : TOvcCalculator
read FCalculator;
property EditControl : TOvcNumberEditEx
read FOvcEdit;
published
{$IFDEF VERSION4}
property Anchors;
{$IFNDEF LCL}
property BiDiMode : TBiDiMode
read GetBiDiMode
write SetBiDiMode;
{$ENDIF}
property Constraints;
{$IFNDEF LCL}
property ParentBiDiMode : Boolean
read GetParentBiDiMode
write SetParentBiDiMode;
{$ENDIF}
property DragKind : TDragKind
read GetDragKind
write SetDragKind;
{$ENDIF}
property About : string
read GetAbout
write SetAbout;
property AllowIncDec : Boolean
read FAllowIncDec
write FAllowIncDec;
{$IFNDEF LCL}
property AutoSelect : Boolean
read GetAutoSelect
write SetAutoSelect;
{$ENDIF}
property AutoSize : Boolean
read GetAutoSize
write SetAutoSize;
property CharCase : TEditCharCase
read GetCharCase
write SetCharCase;
property Controller : TOvcController
read GetController
write SetEditController;
property Cursor : TCursor
read GetCursor
write SetCursor;
property DragCursor : TCursor
read GetDragCursor
write SetDragCursor;
{$IFDEF VERSION4}
property DragMode : TDragMode
read GetDragMode
write SetDragMode;
{$ENDIF}
property Enabled : Boolean
read FEnabled
write FEnabled;
property Font : TFont
read GetFont
write SetFont;
{$IFNDEF LCL}
property HideSelection : Boolean
read GetHideSelection
write SetHideSelection;
property ImeMode : TImeMode
read GetImeMode
write SetImeMode;
property ImeName;
{$ENDIF}
property MaxLength : integer
read GetMaxLength
write SetMaxLength;
{$IFNDEF LCL}
property OEMConvert : Boolean
read GetOEMConvert
write SetOEMConvert;
{$ENDIF}
property ParentFont : Boolean
read GetParentFont
write SetParentFont;
property ParentShowHint : Boolean
read GetParentShowHint
write SetParentShowHint;
property PasswordChar : Char
read GetPasswordChar
write SetPasswordChar;
property PopupAnchor : TOvcPopupAnchor
read GetPopupAnchor
write SetPopupAnchor;
property PopupColors : TOvcCalcColors
read GetPopupColors
write SetPopupColors;
property PopupDecimals : Integer
read GetPopupDecimals
write SetPopupDecimals;
property PopupFont : TFont
read GetPopupFont
write SetPopupFont;
property PopupHeight : Integer
read GetPopupHeight
write SetPopupHeight;
property PopupMenu;
property PopupWidth : Integer
read GetPopupWidth
write SetPopupWidth;
property ReadOnly : Boolean
read GetReadOnly
write SetReadOnly;
property ShowButton : Boolean
read GetEditShowButton
write SetEditShowButton;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
{events}
property OnChange : TNotifyEvent
read GetOnChange
write SetOnChange;
property OnClick : TNotifyEvent
read GetOnClick
write SetOnClick;
property OnDblClick : TNotifyEvent
read GetOnDblClick
write SetOnDblClick;
property OnDragDrop : TDragDropEvent
read GetOnDragDrop
write SetOnDragDrop;
property OnDragOver : TDragOverEvent
read GetOnDragOver
write SetOnDragOver;
property OnEndDrag : TEndDragEvent
read GetOnEndDrag
write SetOnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown : TKeyEvent
read GetOnKeyDown
write SetOnKeyDown;
property OnKeyPress : TKeyPressEvent
read GetOnKeyPress
write SetOnKeyPress;
property OnKeyUp : TKeyEvent
read GetOnKeyUp
write SetOnKeyUp;
property OnMouseDown : TMouseEvent
read GetOnMouseDown
write SetOnMouseDown;
property OnMouseMove : TMouseMoveEvent
read GetOnMouseMove
write SetOnMouseMove;
property OnMouseUp : TMouseEvent
read GetOnMouseUp
write SetOnMouseUp;
property OnStartDrag;
property OnPopupClose : TOvcPopupEvent
read GetOnPopupClose
write SetOnPopupClose;
property OnPopupOpen : TOvcPopupEvent
read GetOnPopupOpen
write SetOnPopupOpen;
end;
implementation
constructor TOvcBorderEdPopup.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle - [csSetCaption];
ButtonWidth := ButtonGlyph.Width;
DoShowButton := FShowButton;
end;
procedure TOvcBorderEdPopup.CreateParams(var Params : TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or WS_CLIPCHILDREN;
end;
procedure TOvcBorderEdPopup.CreateWnd;
begin
inherited CreateWnd;
{force button placement}
SetBounds(Left, Top, Width, Height);
if (Assigned(FButton)) then
FButton.Enabled := GetButtonEnabled;
end;
destructor TOvcBorderEdPopup.Destroy;
begin
{ Freeing the button glyph throws access violation for some reason }
{ we'll just let it leak for now. }
// if FButtonGlyph <> nil then
// FButtonGlyph.Free;
inherited Destroy;
end;
function TOvcBorderEdPopup.GetButtonEnabled : Boolean;
begin
Result := not TOvcEdit(FEdit).ReadOnly;
end;
function TOvcBorderEdPopup.GetButtonWidth : Integer;
begin
if FShowButton then begin
Result := GetSystemMetrics(SM_CXHSCROLL);
if Assigned(FButtonGlyph) and not FButtonGlyph.Empty then
if FButtonGlyph.Width + 4 > Result then
Result := FButtonGlyph.Width + 4;
end else
Result := 0;
end;
function TOvcBorderEdPopup.GetButtonGlyph : TBitmap;
begin
if not Assigned(FButtonGlyph) then
FButtonGlyph := TBitmap.Create;
Result := FButtonGlyph
end;
procedure TOvcBorderEdPopup.GlyphChanged;
begin
end;
procedure TOvcBorderEdPopup.Loaded;
begin
inherited Loaded;
if Assigned(FButtonGlyph) then
FButton.Glyph.Assign(FButtonGlyph);
end;
procedure TOvcBorderEdPopup.OnMsgClose(var M : TMessage);
begin
if (Assigned(FOnPopupClose)) then
FOnPopupClose(Self);
end;
procedure TOvcBorderEdPopup.OnMsgOpen(var M : TMessage);
begin
if (Assigned(FOnPopupOpen)) then
FOnPopupOpen(Self);
end;
procedure TOvcBorderEdPopup.PopupClose;
begin
FPopupActive := False;
PostMessage(Handle, BorderMsgClose, 0, 0);
end;
procedure TOvcBorderEdPopup.PopupOpen;
begin
FPopupActive := True;
PostMessage(Handle, BorderMsgOpen, 0, 0);
end;
procedure TOvcBorderEdPopup.SetEditControl(EC : TOvcCustomEdit);
begin
inherited SetEditControl(EC);
FEdit := EC;
end;
procedure TOvcBorderEdPopup.SetButtonGlyph(Value : TBitmap);
begin
if not Assigned(FButtonGlyph) then
FButtonGlyph := TBitmap.Create;
if not Assigned(Value) then begin
FButtonGlyph.Free;
FButtonGlyph := TBitmap.Create;
end else
FButtonGlyph.Assign(Value);
GlyphChanged;
FButton.Glyph.Assign(FButtonGlyph);
SetBounds(Left, Top, Width, Height);
end;
procedure TOvcBorderEdPopup.SetShowButton(Value : Boolean);
begin
FShowButton := Value;
{force resize and redisplay of button}
SetBounds(Left, Top, Width, Height);
end;
{$IFDEF VERSION4}
procedure TOvcBorderEdPopup.CMDialogKey(var Msg : TCMDialogKey);
begin
(*
if PopupActive then begin
with Msg do begin
if ((CharCode = VK_RETURN) or (CHarCode = VK_ESCAPE)) then begin
PopupClose(Self);
Result := 1;
end;
end;
end else
inherited;
*)
end;
{$ENDIF}
procedure TOvcBorderEdPopup.SetBounds(ALeft, ATop, AWidth, AHeight : Integer);
begin
inherited SetBounds(ALeft, ATop, AWidth, AHeight);
end;
{******************************************************************************}
{ TOvcBorderedNumberEdit }
{******************************************************************************}
constructor TOvcBorderedNumberEdit.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
FOvcEdit := TOvcNumberEditEx.Create(Self);
SetEditControl(TOvcCustomEdit(FOvcEdit));
FOvcEdit.Ctl3D := False;
FOvcEdit.BorderStyle := bsNone;
FOvcEdit.ParentColor := True;
FOvcEdit.Parent := Self;
FOvcEdit.Top := 0;
FOvcEdit.Left := 0;
FOvcEdit.TabStop := TabStop;
FOvcEdit.BorderParent := Self;
DoShowButton := FOvcEdit.ShowButton;
ButtonWidth := FOvcEdit.ButtonGlyph.Width + 4;
Height := FEdit.Height;
Width := FEdit.Width;
Borders.BottomBorder.Enabled := True;
FController := FOvcEdit.Controller;
FButton := FOvcEdit.FButton;
FButtonGlyph := FOvcEdit.FButtonGlyph;
FPopupActive := FOvcEdit.FPopupActive;
FOnPopupClose := FOvcEdit.FOnPopupClose;
FShowButton := FOvcEdit.FShowButton;
{$IFDEF VERSION4}
{$IFNDEF LCL}
FBiDiMode := FOvcEdit.BiDiMode;
{$ENDIF}
FDragKind := FOvcEdit.DragKind;
{$IFNDEF LCL}
FParentBiDiMode:= FOvcEdit.ParentBiDiMode;
{$ENDIF}
{$ENDIF}
FAbout := FOvcEdit.About;
{$IFNDEF LCL}
FAutoSelect := FOvcEdit.AutoSelect;
{$ENDIF}
FAutoSize := FOvcEdit.AutoSize;
FBorderStyle := FOvcEdit.BorderStyle;
FCharCase := FOvcEdit.CharCase;
FCursor := FOvcEdit.Cursor;
FDragCursor := FOvcEdit.DragCursor;
FDragMode := FOvcEdit.DragMode;
FEnabled := True;
FFont := FOvcEdit.Font;
{$IFNDEF LCL}
FHideSelection := FOvcEdit.HideSelection;
FImeMode := FOvcEdit.ImeMode;
FImeName := FOvcEdit.ImeName;
{$ENDIF}
FMaxLength := FOvcEdit.MaxLength;
{$IFNDEF LCL}
FOEMConvert := FOvcEdit.OEMConvert;
{$ENDIF}
FParentFont := FOvcEdit.ParentFont;
FParentShowHint:= FOvcEdit.ParentShowHint;
FPasswordChar := FOvcEdit.PasswordChar;
FPopupMenu := FOvcEdit.PopupMenu;
FReadOnly := FOvcEdit.ReadOnly;
FShowHint := FOvcEdit.ShowHint;
FTabOrder := FOvcEdit.TabOrder;
FVisible := True;
FOnChange := FOvcEdit.OnChange;
FOnClick := FOvcEdit.OnClick;
FOnDblClick := FOvcEdit.OnDblClick;
FOnDragDrop := FOvcEdit.OnDragDrop;
FOnDragOver := FOvcEdit.OnDragOver;
FOnEndDrag := FOvcEdit.OnEndDrag;
FOnEnter := FOvcEdit.OnEnter;
FOnExit := FOvcEdit.OnExit;
FOnKeyDown := FOvcEdit.OnKeyDown;
FOnKeyPress := FOvcEdit.OnKeyPress;
FOnKeyUp := FOvcEdit.OnKeyUp;
FOnMouseDown := FOvcEdit.OnMouseDown;
FOnMouseMove := FOvcEdit.OnMouseMove;
FOnMouseUp := FOvcEdit.OnMouseUp;
FOnStartDrag := FOvcEdit.OnStartDrag;
{load button glyph}
{$IFNDEF LCL}
FButtonGlyph.Handle := LoadBaseBitmap('ORBTNCLC');
{$ELSE}
FButtonGlyph.LoadFromLazarusResource('ORBTNCLC');
{$ENDIF}
FButton.Glyph.Assign(FButtonGlyph);
FCalculator := FOvcEdit.Calculator;
end;
destructor TOvcBorderedNumberEdit.Destroy;
begin
FOvcEdit.Free;
FOvcEdit := nil;
inherited Destroy;
end;
function TOvcBorderedNumberEdit.GetAsFloat : Double;
var
I : Integer;
S : string;
begin
S := Text;
for I := Length(S) downto 1 do
if not (S[I] in ['0'..'9', '+', '-', DecimalSeparator]) then
Delete(S, I, 1);
Result := StrToFloat(S);
end;
function TOvcBorderedNumberEdit.GetAsInteger : LongInt;
begin
Result := Round(GetAsFloat);
end;
function TOvcBorderedNumberEdit.GetAsString : string;
begin
Result := Text;
end;
function TOvcBorderedNumberEdit.GetPopupColors : TOvcCalcColors;
begin
Result := FCalculator.Colors;
end;
function TOvcBorderedNumberEdit.GetPopupDecimals : Integer;
begin
Result := FCalculator.Decimals;
end;
function TOvcBorderedNumberEdit.GetPopupFont : TFont;
begin
Result := FCalculator.Font;
end;
function TOvcBorderedNumberEdit.GetPopupHeight : Integer;
begin
Result := FCalculator.Height;
end;
function TOvcBorderedNumberEdit.GetPopupWidth : Integer;
begin
Result := FCalculator.Width;
end;
function TOvcBorderedNumberEdit.GetReadOnly : Boolean;
begin
Result := FOvcEdit.ReadOnly;
FReadOnly := Result;
end;
function TOvcBorderedNumberEdit.GetParentFont : Boolean;
begin
Result := FOvcEdit.ParentFont;
FParentFont := Result;
end;
function TOvcBorderedNumberEdit.GetEditParentShowHint : Boolean;
begin
Result := FOvcEdit.ParentShowHint;
FParentShowHint := Result;
end;
procedure TOvcBorderedNumberEdit.GlyphChanged;
begin
inherited GlyphChanged;
if FButtonGlyph.Empty then
{$IFNDEF LCL}
FButtonGlyph.Handle := LoadBaseBitmap('ORBTNCLC');
{$ELSE}
FButtonGlyph.LoadFromLazarusResource('ORBTNCLC');
{$ENDIF}
end;
procedure TOvcBorderedNumberEdit.SetAsFloat(Value : Double);
begin
Text := FloatToStr(Value);
end;
procedure TOvcBorderedNumberEdit.SetAsInteger(Value : LongInt);
begin
Text := IntToStr(Value);
end;
procedure TOvcBorderedNumberEdit.SetAsString(const Value : string);
begin
Text := Value;
end;
procedure TOvcBorderedNumberEdit.SetPopupColors(Value : TOvcCalcColors);
begin
FCalculator.Colors := Value;
end;
procedure TOvcBorderedNumberEdit.SetPopupDecimals(Value : Integer);
begin
FCalculator.Decimals := Value;
end;
procedure TOvcBorderedNumberEdit.SetPopupFont(Value : TFont);
begin
if Assigned(Value) then
FCalculator.Font.Assign(Value);
end;
procedure TOvcBorderedNumberEdit.SetPopupHeight(Value : Integer);
begin
FCalculator.Height := Value;
end;
procedure TOvcBorderedNumberEdit.SetPopupWidth(Value : Integer);
begin
FCalculator.Width := Value;
end;
procedure TOvcBorderedNumberEdit.SetReadOnly(Value : Boolean);
begin
FReadOnly := Value;
FOvcEdit.ReadOnly := Value;
end;
procedure TOvcBorderedNumberEdit.SetParentFont(Value : Boolean);
begin
FParentFont := Value;
FOvcEdit.ParentFont := Value;
end;
procedure TOvcBorderedNumberEdit.SetEditParentShowHint(Value : Boolean);
begin
FOvcEdit.ParentShowHint := Value;
FParentShowHint := Value;
end;
function TOvcBorderedNumberEdit.GetOnPopupClose : TOvcPopupEvent;
begin
Result := FOvcEdit.OnPopupClose;
FOnPopupClose := Result;
end;
function TOvcBorderedNumberEdit.GetOnPopupOpen : TOvcPopupEvent;
begin
Result := FOvcEdit.OnPopupOpen;
FOnPopupOpen := Result;
end;
function TOvcBorderedNumberEdit.GetPopupAnchor : TOvcPopupAnchor;
begin
Result := FOvcEdit.BorderParent.PopupAnchor;
FPopupAnchor := Result;
end;
function TOvcBorderedNumberEdit.GetEditShowButton : Boolean;
begin
Result := FOvcEdit.ShowButton;
FShowButton := Result;
end;
procedure TOvcBorderedNumberEdit.SetOnPopupClose(Value : TOvcPopupEvent);
begin
FOvcEdit.OnPopupClose := Value;
FOnPopupClose := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnPopupOpen(Value : TOvcPopupEvent);
begin
FOvcEdit.OnPopupOpen := Value;
FOnPopupOpen := Value;
end;
procedure TOvcBorderedNumberEdit.SetPopupAnchor(Value : TOvcPopupAnchor);
begin
FOvcEdit.BorderParent.PopupAnchor := Value;
FPopupAnchor := Value;
end;
procedure TOvcBorderedNumberEdit.SetEditShowButton(Value : Boolean);
begin
FOvcEdit.ShowButton := Value;
FShowButton := Value;
end;
{base property methods}
{$IFDEF VERSION4}
{$IFNDEF LCL}
function TOvcBorderedNumberEdit.GetBiDiMode : TBiDiMode;
begin
Result := FOvcEdit.BiDiMode;
FBiDiMode := Result;
end;
{$ENDIF}
function TOvcBorderedNumberEdit.GetDragKind : TDragKind;
begin
Result := FOvcEdit.DragKind;
FDragKind := Result;
end;
(*
function TOvcBorderedNumberEdit.GetEditConstraints : TSizeConstraints;
begin
Result := FOvcEdit.Constraints;
FConstraints := Result;
end;
*)
{$IFNDEF LCL}
function TOvcBorderedNumberEdit.GetParentBiDiMode : Boolean;
begin
Result := FOvcEdit.ParentBiDiMode;
FParentBiDiMode := Result;
end;
procedure TOvcBorderedNumberEdit.SetBiDiMode(Value : TBiDiMode);
begin
if (Value <> FBiDiMode) then begin
inherited;
FBiDiMode := Value;
FOvcEdit.BiDiMode := Value;
end;
end;
{$ENDIF}
(*
procedure TOvcBorderedNumberEdit.SetEditConstraints(Value : TSizeConstraints);
begin
FConstraints := Value;
FOvcEdit.Constraints := Value;
end;
*)
{$IFNDEF LCL}
procedure TOvcBorderedNumberEdit.SetParentBiDiMode(Value : Boolean);
begin
if (Value <> FParentBiDiMode) then begin
inherited;
FParentBiDiMode := Value;
FOvcEdit.ParentBiDiMode := Value;
end;
end;
{$ENDIF}
procedure TOvcBorderedNumberEdit.SetDragKind(Value : TDragKind);
begin
if (Value <> FDragKind) then begin
FDragKind := Value;
FOvcEdit.DragKind := Value;
end;
end;
{$ENDIF}
function TOvcBorderedNumberEdit.GetAbout : string;
begin
Result := OrVersionStr;
end;
{$IFNDEF LCL}
function TOvcBorderedNumberEdit.GetAutoSelect : Boolean;
begin
Result := FOvcEdit.AutoSelect;
FAutoSelect := FOvcEdit.AutoSelect;
end;
{$ENDIF}
function TOvcBorderedNumberEdit.GetAutoSize : Boolean;
begin
Result := FOvcEdit.AutoSize;
FAutoSize := FOvcEdit.AutoSize;
end;
function TOvcBorderedNumberEdit.GetCharCase : TEditCharCase;
begin
Result := FOvcEdit.CharCase;
FCharCase := Result;
end;
function TOvcBorderedNumberEdit.GetController : TOvcController;
begin
Result := FOvcEdit.Controller;
FController := Result;
end;
function TOvcBorderedNumberEdit.GetCursor : TCursor;
begin
Result := FOvcEdit.Cursor;
FCursor := Result;
end;
function TOvcBorderedNumberEdit.GetDragCursor : TCursor;
begin
Result := FOvcEdit.DragCursor;
FDragCursor := Result;
end;
function TOvcBorderedNumberEdit.GetDragMode : TDragMode;
begin
Result := FOvcEdit.DragMode;
FDragMode := Result;
end;
function TOvcBorderedNumberEdit.GetEditEnabled : Boolean;
begin
Result := FOvcEdit.Enabled;
FEnabled := FOvcEdit.Enabled;
end;
function TOvcBorderedNumberEdit.GetFont : TFont;
begin
Result := FOvcEdit.Font;
FFont := Result;
end;
{$IFNDEF LCL}
function TOvcBorderedNumberEdit.GetHideSelection : Boolean;
begin
Result := FOvcEdit.HideSelection;
FHideSelection := Result;
end;
function TOvcBorderedNumberEdit.GetImeMode : TImeMode;
begin
Result := FOvcEdit.ImeMode;
FImeMode := Result;
end;
function TOvcBorderedNumberEdit.GetImeName : string;
begin
Result := FOvcEdit.ImeName;
FImeName := Result;
end;
{$ENDIF}
function TOvcBorderedNumberEdit.GetMaxLength : Integer;
begin
Result := FOvcEdit.MaxLength;
FMaxLength := Result;
end;
{$IFNDEF LCL}
function TOvcBorderedNumberEdit.GetOEMConvert : Boolean;
begin
Result := FOvcEdit.OEMConvert;
FOEMConvert := Result;
end;
{$ENDIF}
function TOvcBorderedNumberEdit.GetParentShowHint : Boolean;
begin
Result := FOvcEdit.ParentShowHint;
FParentShowHint := Result;
end;
function TOvcBorderedNumberEdit.GetPasswordChar : Char;
begin
Result := FOvcEdit.PasswordChar;
FPasswordChar := Result;
end;
function TOvcBorderedNumberEdit.GetOnChange : TNotifyEvent;
begin
Result := FOvcEdit.OnChange;
FOnChange := Result;
end;
function TOvcBorderedNumberEdit.GetOnClick : TNotifyEvent;
begin
Result := FOvcEdit.OnClick;
FOnClick := Result;
end;
function TOvcBorderedNumberEdit.GetOnDblClick : TNotifyEvent;
begin
Result := FOvcEdit.OnDblClick;
FOnDblClick := Result;
end;
function TOvcBorderedNumberEdit.GetOnDragDrop : TDragDropEvent;
begin
Result := FOvcEdit.OnDragDrop;
FOnDragDrop := Result;
end;
function TOvcBorderedNumberEdit.GetOnDragOver : TDragOverEvent;
begin
Result := FOvcEdit.OnDragOver;
FOnDragOver := Result;
end;
function TOvcBorderedNumberEdit.GetOnEndDrag : TEndDragEvent;
begin
Result := FOvcEdit.OnEndDrag;
FOnEndDrag := Result;
end;
function TOvcBorderedNumberEdit.GetOnKeyDown : TKeyEvent;
begin
Result := FOvcEdit.OnKeyDown;
FOnKeyDown := Result;
end;
function TOvcBorderedNumberEdit.GetOnKeyPress : TKeyPressEvent;
begin
Result := FOvcEdit.OnKeyPress;
FOnKeyPress := Result;
end;
function TOvcBorderedNumberEdit.GetOnKeyUp : TKeyEvent;
begin
Result := FOvcEdit.OnKeyUp;
FOnKeyUp := Result;
end;
function TOvcBorderedNumberEdit.GetOnMouseDown : TMouseEvent;
begin
Result := FOvcEdit.OnMouseDown;
FOnMouseDown := Result;
end;
function TOvcBorderedNumberEdit.GetOnMouseMove : TMouseMoveEvent;
begin
Result := FOvcEdit.OnMouseMove;
FOnMouseMove := Result;
end;
function TOvcBorderedNumberEdit.GetOnMouseUp : TMouseEvent;
begin
Result := FOvcEdit.OnMouseUp;
FOnMouseUp := Result;
end;
procedure TOvcBorderedNumberEdit.SetAbout(const Value : string);
begin
end;
{$IFNDEF LCL}
procedure TOvcBorderedNumberEdit.SetAutoSelect(Value : Boolean);
begin
if (Value <> FAutoSelect) then begin
FAutoSelect := Value;
FOvcEdit.AutoSelect := Value;
end;
end;
{$ENDIF}
procedure TOvcBorderedNumberEdit.SetAutoSize(Value : Boolean);
begin
FAutoSize := Value;
FOvcEdit.AutoSize := Value;
end;
procedure TOvcBorderedNumberEdit.SetCharCase(Value : TEditCharCase);
begin
FCharCase := Value;
FOvcEdit.CharCase := Value;
end;
procedure TOvcBorderedNumberEdit.SetEditController(Value : TOvcController);
begin
FController := Value;
FOvcEdit.Controller := Value;
end;
procedure TOvcBorderedNumberEdit.SetCursor(Value : TCursor);
begin
FCursor := Value;
FOvcEdit.Cursor := Value;
end;
procedure TOvcBorderedNumberEdit.SetDragCursor(Value : TCursor);
begin
if (Value <> FDragCursor) then begin
FDragCursor := Value;
FOvcEdit.DragCursor := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetEditDragMode(Value : TDragMode);
begin
if (Value <> FDragMode) then begin
FDragMode := Value;
FOvcEdit.DragMode := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetEditEnabled(Value : Boolean);
begin
if (Value <> FEnabled) then begin
FEnabled := Value;
Enabled := Value;
FOvcEdit.Enabled := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetFont(Value : TFont);
begin
if (Value <> FFont) then begin
FFont := Value;
FOvcEdit.Font := Value;
end;
end;
{$IFNDEF LCL}
procedure TOvcBorderedNumberEdit.SetHideSelection(Value : Boolean);
begin
if (Value <> FHideSelection) then begin
FHideSelection := Value;
FOvcEdit.HideSelection := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetImeMode(Value : TImeMode);
begin
if (Value <> FImeMode) then begin
FImeMode := Value;
FOvcEdit.ImeMode := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetImeName(const Value : string);
begin
if (Value <> FImeName) then begin
FImeName := Value;
FOvcEdit.ImeName := Value;
end;
end;
{$ENDIF}
procedure TOvcBorderedNumberEdit.SetMaxLength(Value : Integer);
begin
if (Value <> FMaxLength) then begin
FMaxLength := Value;
FOvcEdit.MaxLength := Value;
end;
end;
{$IFNDEF LCL}
procedure TOvcBorderedNumberEdit.SetOEMConvert(Value : Boolean);
begin
if (Value <> FOEMConvert) then begin
FOEMConvert := Value;
FOvcEdit.OEMConvert := Value;
end;
end;
{$ENDIF}
procedure TOvcBorderedNumberEdit.SetParentShowHint(Value : Boolean);
begin
if (Value <> FParentShowHint) then begin
FParentShowHint := Value;
FOvcEdit.ParentShowHint := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetPasswordChar(Value : Char);
begin
if (Value <> FPasswordChar) then begin
FPasswordChar := Value;
FOvcEdit.PasswordChar := Value;
end;
end;
procedure TOvcBorderedNumberEdit.SetOnChange(Value : TNotifyEvent);
begin
FOnChange := Value;
FOvcEdit.OnChange := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnClick(Value : TNotifyEvent);
begin
FOnClick := Value;
FOvcEdit.OnClick := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnDblClick(Value : TNotifyEvent);
begin
FOnDblClick := Value;
FOvcEdit.OnDblClick := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnDragDrop(Value : TDragDropEvent);
begin
FOnDragDrop := Value;
FOvcEdit.OnDragDrop := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnDragOver(Value : TDragOverEvent);
begin
FOnDragOver := Value;
FOvcEdit.OnDragOver := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnEndDrag(Value : TEndDragEvent);
begin
FOnEndDrag := Value;
FOvcEdit.OnEndDrag := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnKeyDown(Value : TKeyEvent);
begin
FOnKeyDown := Value;
FOvcEdit.OnKeyDown := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnKeyPress(Value : TKeyPressEvent);
begin
FOnKeyPress := Value;
FOvcEdit.OnKeyPress := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnKeyUp(Value : TKeyEvent);
begin
FOnKeyUp := Value;
FOvcEdit.OnKeyUp := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnMouseDown(Value : TMouseEvent);
begin
FOnMouseDown := Value;
FOvcEdit.OnMouseDown := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnMouseMove(Value : TMouseMoveEvent);
begin
FOnMouseMove := Value;
FOvcEdit.OnMouseMove := Value;
end;
procedure TOvcBorderedNumberEdit.SetOnMouseUp(Value : TMouseEvent);
begin
FOnMouseUp := Value;
FOvcEdit.OnMouseUp := Value;
end;
end.