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

264 lines
7.3 KiB
ObjectPascal

{*********************************************************}
{* OVCTGPNS.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}
unit ovctgpns;
{-Orpheus Table - grid pens}
interface
uses
Classes, Graphics;
type
TGridEffect = (geNone, geVertical, geHorizontal, geBoth, ge3D);
type
TOvcGridPen = class(TPersistent)
protected {private}
{.Z+}
FNormalColor : TColor;
FSecondColor : TColor;
FEffect : TGridEffect;
FStyle : TPenStyle;
FOnCfgChanged : TNotifyEvent;
{.Z-}
protected
{.Z+}
procedure SetNormalColor(C : TColor);
procedure SetSecondColor(C : TColor);
procedure SetEffect(E : TGridEffect);
procedure SetStyle(S : TPenStyle);
procedure DoCfgChanged;
{.Z-}
public {protected}
{.Z+}
property OnCfgChanged : TNotifyEvent
read FOnCfgChanged write FOnCfgChanged;
{.Z-}
public
constructor Create;
procedure Assign(Source : TPersistent); override;
published
property NormalColor : TColor
read FNormalColor write SetNormalColor;
property SecondColor : TColor
read FSecondColor write SetSecondColor
default clBtnHighlight;
property Style : TPenStyle
read FStyle write SetStyle;
property Effect : TGridEffect
read FEffect write SetEffect;
end;
TOvcGridPenSet = class(TPersistent)
protected {private}
{.Z+}
FNormalGrid : TOvcGridPen;
FLockedGrid : TOvcGridPen;
FCellWhenFocused : TOvcGridPen;
FCellWhenUnfocused : TOvcGridPen;
{.Z-}
protected
{.Z+}
procedure SetOnCfgChanged(OC : TNotifyEvent);
{.Z-}
public {protected}
{.Z+}
property OnCfgChanged : TNotifyEvent
write SetOnCfgChanged;
{.Z-}
public
constructor Create;
destructor Destroy; override;
procedure Assign(Source : TPersistent); override;
published
property NormalGrid : TOvcGridPen
read FNormalGrid write FNormalGrid;
property LockedGrid : TOvcGridPen
read FLockedGrid write FLockedGrid;
property CellWhenFocused : TOvcGridPen
read FCellWhenFocused write FCellWhenFocused;
property CellWhenUnfocused : TOvcGridPen
read FCellWhenUnfocused write FCellWhenUnfocused;
end;
implementation
{===TOvcGridPen==========================================================}
constructor TOvcGridPen.Create;
begin
FNormalColor := clBtnShadow;
FSecondColor := clBtnHighlight;
FStyle := psSolid;
FEffect := geBoth;
end;
{--------}
procedure TOvcGridPen.Assign(Source : TPersistent);
var
Src : TOvcGridPen absolute Source;
begin
if (Source is TOvcGridPen) then
begin
FNormalColor := Src.NormalColor;
FSecondColor := Src.SecondColor;
FStyle := Src.Style;
FEffect := Src.Effect;
DoCfgChanged;
end;
end;
{--------}
procedure TOvcGridPen.DoCfgChanged;
begin
if Assigned(FOnCfgChanged) then
OnCfgChanged(Self);
end;
{--------}
procedure TOvcGridPen.SetNormalColor(C : TColor);
begin
if (C <> FNormalColor) then
begin
FNormalColor := C;
DoCfgChanged;
end;
end;
{--------}
procedure TOvcGridPen.SetSecondColor(C : TColor);
begin
if (C <> FSecondColor) then
begin
FSecondColor := C;
DoCfgChanged;
end;
end;
{--------}
procedure TOvcGridPen.SetStyle(S : TPenStyle);
begin
if (S <> FStyle) then
begin
FStyle := S;
DoCfgChanged;
end;
end;
{--------}
procedure TOvcGridPen.SetEffect(E : TGridEffect);
begin
if (E <> FEffect) then
begin
FEffect := E;
DoCfgChanged;
end;
end;
{=====================================================================}
{===TOvcGridPenSet=======================================================}
constructor TOvcGridPenSet.Create;
begin
FNormalGrid := TOvcGridPen.Create;
with FNormalGrid do
begin
Style := psDot;
end;
FLockedGrid := TOvcGridPen.Create;
with FLockedGrid do
begin
Effect := ge3D;
end;
FCellWhenFocused := TOvcGridPen.Create;
with FCellWhenFocused do
begin
NormalColor := clBlack;
end;
FCellWhenUnfocused := TOvcGridPen.Create;
with FCellWhenUnfocused do
begin
NormalColor := clBlack;
Style := psDash;
end;
end;
{--------}
destructor TOvcGridPenSet.Destroy;
begin
FNormalGrid.Free;
FLockedGrid.Free;
FCellWhenFocused.Free;
FCellWhenUnfocused.Free;
end;
{--------}
procedure TOvcGridPenSet.Assign(Source : TPersistent);
var
Src : TOvcGridPenSet absolute Source;
begin
if (Source is TOvcGridPenSet) then
begin
FNormalGrid.Assign(Src.NormalGrid);
FLockedGrid.Assign(Src.LockedGrid);
FCellWhenFocused.Assign(Src.CellWhenFocused);
FCellWhenUnfocused.Assign(Src.CellWhenUnfocused);
end;
end;
{--------}
procedure TOvcGridPenSet.SetOnCfgChanged(OC : TNotifyEvent);
begin
FNormalGrid.OnCfgChanged := OC;
FLockedGrid.OnCfgChanged := OC;
FCellWhenFocused.OnCfgChanged := OC;
FCellWhenUnfocused.OnCfgChanged := OC;
end;
{=====================================================================}
end.