⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsdatetimedef.pas

📁 企业进销存管理系统
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       ObjectSight Visual Components                   }
{       TopGrid TtsDateTimeDef abstract class           }
{                                                       }
{       Copyright (c) 2001, ObjectSight                 }
{                                                       }
{*******************************************************}

unit TSDateTimeDef;

interface

uses
    Classes, Controls, Graphics;

type
    {$IFNDEF TSVER_V3}
    TtsDate = TDateTime; 
    {$ENDIF}

    TtsDateTimeLink = class;
    TtsDateTimeDefComponent = class;
    TtsDateTimeDefComponentClass = class of TtsDateTimeDefComponent;

    TtsDateTimeDisplay = (dtDate, dtTime, dtDateTime);
    TtsFirstDayOfWeek = (dowSunday, dowMonday);
    TtsShowDayNames = (sdnNone, sdnFirstLetter, sdnShortDayNames);

    TtsDateTimeProps = class(TPersistent)
    protected
        FDateTimeDef: TtsDateTimeDefComponent;

        function  GetColor: TColor; virtual; abstract;
        procedure SetColor(Value: TColor); virtual; abstract;
        function  GetCalendarRows: Integer; virtual; abstract;
        procedure SetCalendarRows(Value: Integer); virtual; abstract;
        function  GetDateTimeDisplay: TtsDateTimeDisplay; virtual; abstract;
        procedure SetDateTimeDisplay(Value: TtsDateTimeDisplay); virtual; abstract;
        function  GetDayNameFontColor: TColor; virtual; abstract;
        procedure SetDayNameFontColor(Value: TColor); virtual; abstract;
        function  GetDisabledFontColor: TColor; virtual; abstract;
        procedure SetDisabledFontColor(Value: TColor); virtual; abstract;
        function  GetFirstDayOfWeek: TtsFirstDayOfWeek; virtual; abstract;
        procedure SetFirstDayOfWeek(Value: TtsFirstDayOfWeek); virtual; abstract;
        function  GetFont: TFont; virtual; abstract;
        procedure SetFont(Value: TFont); virtual; abstract;
        function  GetParentFont: Boolean; virtual; abstract;
        procedure SetParentFont(Value: Boolean); virtual; abstract;
        function  GetLineColor: TColor; virtual; abstract;
        procedure SetLineColor(Value: TColor); virtual; abstract;
        function  GetMaxDate: TtsDate; virtual; abstract;
        procedure SetMaxDate(Value: TtsDate); virtual; abstract;
        function  GetMinDate: TtsDate; virtual; abstract;
        procedure SetMinDate(Value: TtsDate); virtual; abstract;
        function  GetMonthColor: TColor; virtual; abstract;
        procedure SetMonthColor(Value: TColor); virtual; abstract;
        function  GetMonthFontColor: TColor; virtual; abstract;
        procedure SetMonthFontColor(Value: TColor); virtual; abstract;
        function  GetOkCaption: string; virtual; abstract;
        procedure SetOkCaption(Value: string); virtual; abstract;
        function  GetCancelCaption: string; virtual; abstract;
        procedure SetCancelCaption(Value: string); virtual; abstract;
        function  GetCaption: string; virtual; abstract;
        procedure SetCaption(Value: string); virtual; abstract;
        function  GetSelectSaturday: Boolean; virtual; abstract;
        procedure SetSelectSaturday(Value: Boolean); virtual; abstract;
        function  GetSelectSunday: Boolean; virtual; abstract;
        procedure SetSelectSunday(Value: Boolean); virtual; abstract;
        function  GetShowDayNames: TtsShowDayNames; virtual; abstract;
        procedure SetShowDayNames(Value: TtsShowDayNames); virtual; abstract;
        function  GetShowSeconds: Boolean; virtual; abstract;
        procedure SetShowSeconds(Value: Boolean); virtual; abstract;
        function  GetShowToday: Boolean; virtual; abstract;
        procedure SetShowToday(Value: Boolean); virtual; abstract;
        function  GetShowWeekNumbers: Boolean; virtual; abstract;
        procedure SetShowWeekNumbers(Value: Boolean); virtual; abstract;
        function  GetShowSingleMonth: Boolean; virtual; abstract;
        procedure SetShowSingleMonth(Value: Boolean); virtual; abstract;
        function  GetWeekFontColor: TColor; virtual; abstract;
        procedure SetWeekFontColor(Value: TColor); virtual; abstract;
        function  GetDateTime: Variant; virtual; abstract;
        procedure SetDateTime(Value: Variant); virtual; abstract;
        function  GetPopupForm: Boolean; virtual; abstract;
        procedure SetPopupForm(Value: Boolean); virtual; abstract;

    public
        constructor Create(DateTimeDef: TtsDateTimeDefComponent);
        property DateTimeDef: TtsDateTimeDefComponent read FDateTimeDef;
        property DateTime: Variant read GetDateTime write SetDateTime;
        property PopupForm: Boolean read GetPopupForm write SetPopupForm default False;

    published
        property CalendarRows: Integer read GetCalendarRows write SetCalendarRows default 8;
        property CancelCaption: string read GetCancelCaption write SetCancelCaption;
        property Caption: string read GetCaption write SetCaption;
        property Color: TColor read GetColor write SetColor default clWindow;
        property DateTimeDisplay: TtsDateTimeDisplay read GetDateTimeDisplay write SetDateTimeDisplay default dtDate;
        property DayNameFontColor: TColor read GetDayNameFontColor write SetDayNameFontColor default clHighLight;
        property DisabledFontColor: TColor read GetDisabledFontColor write SetDisabledFontColor default clInactiveBorder;
        property FirstDayOfWeek: TtsFirstDayOfWeek read GetFirstDayOfWeek write SetFirstDayOfWeek default dowSunday;
        property Font: TFont read GetFont write SetFont;
        property LineColor: TColor read GetLineColor write SetLineColor default clGrayText;
        property MaxDate: TtsDate read GetMaxDate write SetMaxDate;
        property MinDate: TtsDate read GetMinDate write SetMinDate;
        property MonthColor: TColor read GetMonthColor write SetMonthColor default clHighLight;
        property MonthFontColor: TColor read GetMonthFontColor write SetMonthFontColor default clHighLightText;
        property OkCaption: String read GetOkCaption write SetOkCaption;
        property ParentFont: Boolean read GetParentFont write SetParentFont;
        property SelectSaturday: Boolean read GetSelectSaturday write SetSelectSaturday default True;
        property SelectSunday: Boolean read GetSelectSunday write SetSelectSunday default True;
        property ShowDayNames: TtsShowDayNames read GetShowDayNames write SetShowDayNames default sdnFirstLetter;
        property ShowSeconds: Boolean read GetShowSeconds write SetShowSeconds default False;
        property ShowSingleMonth: Boolean read GetShowSingleMonth write SetShowSingleMonth default True;
        property ShowToday: Boolean read GetShowToday write SetShowToday default True;
        property ShowWeekNumbers: Boolean read GetShowWeekNumbers write SetShowWeekNumbers default True;
        property WeekFontColor: TColor read GetWeekFontColor write SetWeekFontColor default clHighLight;
    end;

    TtsDateTimeDefComponent = class(TComponent)
    protected
        FLinks: TList;
        FRefCount: TList;

        function  GetControl: TWinControl; virtual; abstract;
        procedure SetSelect(Value: TNotifyEvent); virtual; abstract;
        function  GetSelect: TNotifyEvent; virtual; abstract;
        procedure SetCancel(Value: TNotifyEvent); virtual; abstract;
        function  GetCancel: TNotifyEvent; virtual; abstract;
        procedure SetDateTime(Value: Variant); virtual; abstract;
        function  GetDateTime: Variant; virtual; abstract;
        procedure SetDateTimeDisplay(Value: TtsDateTimeDisplay); virtual; abstract;
        function  GetDateTimeDisplay: TtsDateTimeDisplay; virtual; abstract;
        procedure SetPopupForm(Value: Boolean); virtual; abstract;
        function  GetPopupForm: Boolean; virtual; abstract;
        procedure SetDateTimeProps(Value: TtsDateTimeProps); virtual; abstract;
        function  GetDateTimeProps: TtsDateTimeProps; virtual; abstract;

        procedure AddLink(Link: TtsDateTimeLink);
        procedure RemoveLink(Link: TtsDateTimeLink; RemoveAll: Boolean);
        procedure NotifyLinks;

    public
        constructor Create(AOwner: TComponent); override;
        destructor  Destroy; override;

        procedure InitializeDisplay; virtual; abstract;
        procedure InitializeFocus; virtual; abstract;

        property DateTimeProps: TtsDateTimeProps read GetDateTimeProps write SetDateTimeProps;
        property Control: TWinControl read GetControl;
        property DateTime: Variant read GetDateTime write SetDateTime;
        property DateTimeDisplay: TtsDateTimeDisplay read GetDateTimeDisplay write SetDateTimeDisplay;
        property PopupForm: Boolean read GetPopupForm write SetPopupForm;

        property OnSelect: TNotifyEvent read GetSelect write SetSelect;
        property OnCancel: TNotifyEvent read GetCancel write SetCancel;
    end;

    TtsDateTimeLink = class(TPersistent)
    public
        procedure Add(DateTimeDef: TtsDateTimeDefComponent);
        procedure Remove(DateTimeDef: TtsDateTimeDefComponent);
        procedure DateTimeDefDeleted(DateTimeDef: TtsDateTimeDefComponent); virtual;
    end;

implementation

constructor TtsDateTimeProps.Create(DateTimeDef: TtsDateTimeDefComponent);
begin
    inherited Create;
    FDateTimeDef := DateTimeDef;
end;

{TtsDateTimeDefComponent}

constructor TtsDateTimeDefComponent.Create(AOwner: TComponent);
begin
    inherited;
    FLinks := TList.Create;
    FRefCount := TList.Create;
end;

destructor TtsDateTimeDefComponent.Destroy;
begin
    NotifyLinks;
    FLinks.Free;
    FRefCount.Free;
    inherited;
end;

procedure TtsDateTimeDefComponent.RemoveLink(Link: TtsDateTimeLink; RemoveAll: Boolean);
var
    Index: Integer;
begin
    Index := FLinks.IndexOf(Link);
    if Index >= 0 then
    begin
        FRefCount[Index] := Pointer(Integer(FRefCount[Index]) - 1);
        if RemoveAll or (Integer(FRefCount[Index]) <= 0) then
        begin
            FLinks.Delete(Index);
            FRefCount.Delete(Index);
        end;
    end;
end;

procedure TtsDateTimeDefComponent.AddLink(Link: TtsDateTimeLink);
var
    Index: Integer;
begin
    Index := FLinks.IndexOf(Link);
    if Index >= 0 then
        FRefCount[Index] := Pointer(Integer(FRefCount[Index]) + 1)
    else
    begin
        FLinks.Add(Link);
        FRefCount.Add(Pointer(1));
    end;
end;

procedure TtsDateTimeDefComponent.NotifyLinks;
var
    I: Integer;
    Link: TtsDateTimeLink;
begin
    for I := 0 to FLinks.Count - 1 do
    begin
        Link := TtsDateTimeLink(FLinks.Items[I]);
        Link.DateTimeDefDeleted(Self);
    end;
end;

{TtsDateTimeLink}

procedure TtsDateTimeLink.Add(DateTimeDef: TtsDateTimeDefComponent);
begin
    if not Assigned(DateTimeDef) then Exit;
    DateTimeDef.AddLink(Self);
end;

procedure TtsDateTimeLink.Remove(DateTimeDef: TtsDateTimeDefComponent);
begin
    if not Assigned(DateTimeDef) then Exit;
    DateTimeDef.RemoveLink(Self, False);
end;

procedure TtsDateTimeLink.DateTimeDefDeleted(DateTimeDef: TtsDateTimeDefComponent);
begin
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -