lazarus/lcl/include/dbcalendar.inc
ondrej 0c5181bf67 Revert r58337 and r58339 #e887c43e0d
git-svn-id: trunk@58346 -
2018-06-19 20:04:57 +00:00

133 lines
3.1 KiB
PHP

{%MainUnit ../dbctrls.pp}
{******************************************************************************
TDBCalendar
data aware Calendar, base found in dbctrls.pp
******************************************************************************
*****************************************************************************
This file is part of the Lazarus Component Library (LCL)
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
// included by dbctrls.pp
{ Private Methods }
//update the caption on next record etc...
procedure TDBCalendar.DataChange(Sender: TObject);
begin
if FDatalink.Active and (FDataLink.Field <> nil) then
UpdateDate(FDatalink.Field.Text)
else
UpdateDate('');
end;
procedure TDBCalendar.UpdateData(Sender: TObject);
begin
FDataLink.Field.Text := Text;
end;
function TDBCalendar.GetDataField: string;
begin
Result := FDataLink.FieldName;
end;
function TDBCalendar.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;
function TDBCalendar.GetField: TField;
begin
Result := FDataLink.Field;
end;
function TDBCalendar.GetReadOnly: Boolean;
begin
Result := FDataLink.ReadOnly;
end;
procedure TDBCalendar.SetReadOnly(Value: Boolean);
begin
inherited;
FDataLink.ReadOnly := Value;
end;
procedure TDBCalendar.SetDate(const AValue: String);
begin
inherited Date := AValue;
DataChange(Self);
end;
procedure TDBCalendar.SetDataField(const Value: string);
begin
FDataLink.FieldName := Value;
end;
procedure TDBCalendar.SetDataSource(Value: TDataSource);
begin
ChangeDataSource(Self,FDataLink,Value);
end;
procedure TDBCalendar.UpdateDate(const AValue: string);
begin
if AValue='' then
// TODO: do dbcalendar needs some visual feedback
// that current date is invalid?
else
inherited date := AValue;
end;
procedure TDBCalendar.CMGetDataLink(var Message: TLMessage);
begin
Message.Result := PtrUInt(FDataLink);
end;
procedure TDBCalendar.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation=opRemove) then begin
if (FDataLink<>nil) and (AComponent=DataSource) then
DataSource:=nil;
end;
end;
procedure TDBCalendar.EditingDone;
begin
FDataLink.UpdateRecord;
inherited EditingDone;
end;
function TDBCalendar.ExecuteAction(AAction: TBasicAction): Boolean;
begin
Result := inherited ExecuteAction(AAction) or
(FDataLink <> nil) and FDataLink.ExecuteAction(AAction);
end;
function TDBCalendar.UpdateAction(AAction: TBasicAction): Boolean;
begin
Result := inherited UpdateAction(AAction) or
(FDataLink <> nil) and FDataLink.UpdateAction(AAction);
end;
{ Public Methods }
constructor TDBCalendar.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
FDataLink := TFieldDataLink.Create;
FDataLink.Control := Self;
FDataLink.OnDataChange := @DataChange;
FDataLink.OnUpdateData := @UpdateData;
end;
destructor TDBCalendar.Destroy;
begin
FDataLink.Destroy;
inherited Destroy;
end;