home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 August
/
VPR9608A.BIN
/
del20try
/
install
/
data.z
/
DBCAL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-05-08
|
2KB
|
100 lines
unit DBCal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, CalSamp, DB, DBTables;
type
TDBCalendar = class(TSampleCalendar)
private
FDataLink: TFieldDataLink;
FReadOnly: Boolean;
FUpdating: Boolean;
procedure DataChange(Sender: TObject);
function GetDataField: string;
function GetDataSource: TDataSource;
procedure SetDataField(const Value: string);
procedure SetDataSource(Value: TDataSource);
protected
function SelectCell(ACol, ARow: Longint): Boolean; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure UpdateCalendar; override;
published
property DataField: string read GetDataField write SetDataField;
property DataSource: TDataSource read GetDataSource write SetDataSource;
property ReadOnly: Boolean read FReadOnly write FReadOnly default True;
end;
procedure Register;
implementation
constructor TDBCalendar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FReadOnly := True;
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := DataChange;
end;
destructor TDBCalendar.Destroy;
begin
FDataLink.OnDataChange := nil;
FDataLink.Free;
inherited Destroy;
end;
procedure TDBCalendar.DataChange(Sender: TObject);
begin
if FDataLink.FIeld = nil then
CalendarDate := 0
else CalendarDate := FDataLink.Field.AsDateTime;
end;
function TDBCalendar.GetDataField: string;
begin
Result := FDataLink.FieldName;
end;
function TDBCalendar.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;
function TDBCalendar.SelectCell(ACol, ARow: Longint): Boolean;
begin
if (not FUpdating) and FReadOnly then Result := False
else Result := inherited SelectCell(ACol, ARow);
end;
procedure TDBCalendar.SetDataField(const Value: string);
begin
FDataLink.FieldName := Value;
end;
procedure TDBCalendar.SetDataSource(Value: TDataSource);
begin
FDataLink.DataSource := Value;
end;
procedure TDBCalendar.UpdateCalendar;
begin
FUpdating := True;
try
inherited UpdateCalendar;
finally
FUpdating := False;
end;
end;
procedure Register;
begin
RegisterComponents('Samples', [TDBCalendar]);
end;
end.