unit DBButton;
interface
uses
DB, DBCtrls, SysUtils, Classes,
Controls, StdCtrls;
type
TDBButton = class(TButton)
private
FDataLink : TFieldDataLink;
function GetDataField: string;
function GetDataSource: TDataSource;
function GetField: TField;
procedure SetDataField(const Value: string);
procedure SetDataSource(const Value: TDataSource);
protected
procedure DataChange(Sender : TObject);
public
constructor Create(AOwner : TComponent);
override;
destructor Destroy; override;
property Field : TField read GetField;
published
property DataSource : TDataSource
read GetDataSource
write SetDataSource;
property DataField : string
read GetDataField
write SetDataField;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('delphi.about.com',
[TDBButton]);
end;
constructor TDBButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataLink := TFieldDataLink.Create;
FDataLink.Control := self;
FDataLink.OnDataChange := DataChange;
end;
destructor TDBButton.Destroy;
begin
FDataLink.Free;
FDataLink := nil;
inherited;
end;
procedure TDBButton.DataChange(
Sender: TObject);
begin
Caption := FDataLink.Field.AsString;
Enabled := NOT FDataLink.Field.IsNull;
end;
function TDBButton.GetField: TField;
begin
result := FDataLink.Field;
end;
function TDBButton.GetDataField: string;
begin
result := FDataLink.FieldName;
end;
procedure TDBButton.SetDataField(
const Value: string);
begin
FDataLink.FieldName := value;
end;
function TDBButton.GetDataSource: TDataSource;
begin
result := FDataLink.DataSource;
end;
procedure TDBButton.SetDataSource(
const Value: TDataSource);
begin
FDataLink.DataSource := Value;
end;
end. //DBButton