File: fradata.pp

package info (click to toggle)
lazarus 4.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 275,760 kB
  • sloc: pascal: 2,341,904; xml: 509,420; makefile: 348,726; cpp: 93,608; sh: 3,387; java: 609; perl: 297; sql: 222; ansic: 137
file content (153 lines) | stat: -rw-r--r-- 3,311 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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.