mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 07:21:34 +02:00
154 lines
3.2 KiB
ObjectPascal
154 lines
3.2 KiB
ObjectPascal
unit fradata;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, db, FileUtil, LResources, Forms, Controls, ExtCtrls,
|
|
DbCtrls, DBGrids, Buttons, dmImages;
|
|
|
|
type
|
|
|
|
{ TDataFrame }
|
|
|
|
TDataFrame = class(TFrame)
|
|
FDBGrid: TDBGrid;
|
|
FDataSource: TDataSource;
|
|
FNavigator: TDBNavigator;
|
|
FTopPanel: TPanel;
|
|
FExportSB: TSpeedButton;
|
|
FCodeSB: TSpeedButton;
|
|
procedure DoExport(Sender : TObject);
|
|
procedure DoCode(Sender : TObject);
|
|
private
|
|
{ private declarations }
|
|
FTableName : String;
|
|
function GetDisplayMemoText: Boolean;
|
|
procedure SetDisplayMemoText(AValue: Boolean);
|
|
public
|
|
{ public declarations }
|
|
procedure Checkbuttons;
|
|
function GetDataset: TDataset;
|
|
function GetExtra: Boolean;
|
|
procedure SetExtra(const AValue: Boolean);
|
|
Protected
|
|
Property TopPanel : TPanel Read FTopPanel;
|
|
Property DBGrid : TDBGrid Read FDBGrid;
|
|
Property DataSource : TDatasource Read FDataSource;
|
|
procedure SetDataset(const AValue: TDataset);virtual;
|
|
Public
|
|
Property Dataset : TDataset Read GetDataset Write SetDataset;
|
|
Property TableName: String Read FTableName Write FTableName;
|
|
Procedure ExportData;
|
|
Procedure CreateCode;
|
|
Property ShowExtraButtons : Boolean Read GetExtra Write SetExtra;
|
|
Property DisplayMemoText : Boolean Read GetDisplayMemoText Write SetDisplayMemoText;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$r *.lfm}
|
|
uses fpdataexporter,fpcodegenerator;
|
|
|
|
{ TDataFrame }
|
|
|
|
function TDataFrame.GetDataset: TDataset;
|
|
begin
|
|
Result:=FDatasource.Dataset;
|
|
end;
|
|
|
|
procedure TDataFrame.DoExport(Sender: TObject);
|
|
begin
|
|
ExportData;
|
|
end;
|
|
|
|
procedure TDataFrame.DoCode(Sender : TObject);
|
|
|
|
begin
|
|
CreateCode;
|
|
end;
|
|
|
|
|
|
function TDataFrame.GetDisplayMemoText: Boolean;
|
|
begin
|
|
result := (dgDisplayMemoText in FDBGrid.Options);
|
|
end;
|
|
|
|
procedure TDataFrame.SetDisplayMemoText(AValue: Boolean);
|
|
begin
|
|
If AValue <> DisplayMemoText then
|
|
begin
|
|
If AValue then
|
|
FDBGrid.Options := FDBGrid.Options + [dgDisplayMemoText]
|
|
else
|
|
FDBGrid.Options := FDBGrid.Options - [dgDisplayMemoText];
|
|
end;
|
|
end;
|
|
|
|
function TDataFrame.GetExtra: Boolean;
|
|
begin
|
|
Result:=FExportSB.Visible;
|
|
end;
|
|
|
|
procedure TDataFrame.SetExtra(const AValue: Boolean);
|
|
begin
|
|
FExportSB.Visible:=AValue;
|
|
FCodeSB.Visible:=AValue;
|
|
end;
|
|
|
|
procedure TDataFrame.SetDataset(const AValue: TDataset);
|
|
begin
|
|
FDatasource.Dataset:=AValue;
|
|
CheckButtons;
|
|
end;
|
|
|
|
procedure TDataFrame.ExportData;
|
|
begin
|
|
With TFPDataExporter.Create(Dataset) do
|
|
Try
|
|
If Self.TableName<>'' then
|
|
TableNameHint:=Self.TableName;
|
|
Execute;
|
|
Finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TDataFrame.CreateCode;
|
|
begin
|
|
With TFPCodeGenerator.Create(Dataset) do
|
|
try
|
|
If Self.TableName<>'' then
|
|
TableNameHint:=Self.TableName;
|
|
Execute;
|
|
Finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TDataFrame.Checkbuttons;
|
|
|
|
Const
|
|
NavBtns = [nbFirst,nbPrior,nbNext,nbLast,nbRefresh];
|
|
EditBtns = [nbInsert,nbEdit,nbPost,nbDelete,nbCancel];
|
|
|
|
begin
|
|
If Assigned(FNavigator) and Assigned(Dataset) then
|
|
begin
|
|
If Dataset.CanModify then
|
|
begin
|
|
FNavigator.VisibleButtons:=NavBtns;
|
|
FNavigator.Width:=122;
|
|
end
|
|
else
|
|
begin
|
|
FNavigator.VisibleButtons:=NavBtns+EditBtns;
|
|
FNavigator.Width:=244;
|
|
end
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|