📄 ubasebrowser.pas
字号:
unit uBaseBrowser;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, dxExEdtr, DB, DBClient, ImgList, dxTL, dxDBCtrl,
dxDBGrid, dxCntner, StdCtrls, ExtCtrls, ComCtrls, ToolWin, uDM, Provider,
uBaseQryDlg;
const
WM_SHOWQRYDLG = WM_USER + 1004;
type
TBaseBrowser = class(TForm)
cbMain: TCoolBar;
tbMain: TToolBar;
pnlTop: TPanel;
lblCaption: TLabel;
pnl_Cell: TPanel;
Cell: TdxDBGrid;
Img_Main: TImageList;
Actions: TActionList;
actClose: TAction;
actQuery: TAction;
actExportData: TAction;
cdsMast: TClientDataSet;
dsMast: TDataSource;
actDetail: TAction;
actAdd: TAction;
actDel: TAction;
dspMast: TDataSetProvider;
procedure actCloseExecute(Sender: TObject);
procedure actQueryExecute(Sender: TObject);
procedure actExportDataExecute(Sender: TObject);
procedure actDetailExecute(Sender: TObject);
procedure actAddExecute(Sender: TObject);
procedure actDelExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CellDblClick(Sender: TObject);
private
FCondition: string;
FTableName: string;
FQryDLg: TBaseQryDlg;
procedure SetCondition(const Value: string);
procedure SetTableName(const Value: string);
procedure WMShowQryDlg(var Message: TMessage); message WM_SHOWQRYDLG;
{ Private declarations }
protected
FirstShow:Boolean;
ShowQryDlg:Boolean;
procedure InitVars; virtual;
procedure InitDisplay; virtual;
procedure Query; virtual;
procedure GetList; virtual;
procedure ExportData; virtual;
procedure Detail; virtual;
procedure Add; virtual;
procedure Del; virtual;
function GetID:string;virtual;
procedure UpdateKeyFieldValue; virtual;
public
{ Public declarations }
property TableName:string read FTableName write SetTableName;
property Condition:string read FCondition write SetCondition;
property QryDLg:TBaseQryDlg read FQryDLg write FQryDLg;
end;
var
BaseBrowser: TBaseBrowser;
implementation
uses uGlobal;
{$R *.dfm}
{ TBaseBrowser }
procedure TBaseBrowser.Add;
begin
UpdateKeyFieldValue;
end;
procedure TBaseBrowser.Del;
begin
UpdateKeyFieldValue;
end;
procedure TBaseBrowser.Detail;
begin
UpdateKeyFieldValue;
end;
procedure TBaseBrowser.ExportData;
begin
Pub_ExportData(Cell);
end;
procedure TBaseBrowser.GetList;
begin
cdsMast.DisableControls ;
try
if cdsMast.Active then cdsMast.Close ;
cdsMast.CommandText :='SELECT * FROM ' + TableName + ' WHERE ' + FCondition;
cdsMast.Active:=True;
CreateCellCols(cell, cdsMast);
SetAllColumnsCanEdit(cell, False);
finally
cdsMast.EnableControls ;
SetCellAutoWidth(Cell);
end;
end;
procedure TBaseBrowser.Query;
begin
end;
procedure TBaseBrowser.actCloseExecute(Sender: TObject);
begin
Close;
end;
procedure TBaseBrowser.actQueryExecute(Sender: TObject);
begin
Query;
end;
procedure TBaseBrowser.actExportDataExecute(Sender: TObject);
begin
ExportData;
end;
procedure TBaseBrowser.actDetailExecute(Sender: TObject);
begin
Detail;
end;
procedure TBaseBrowser.actAddExecute(Sender: TObject);
begin
Add;
end;
procedure TBaseBrowser.actDelExecute(Sender: TObject);
begin
Del;
end;
procedure TBaseBrowser.InitVars;
begin
Cell.KeyField := CS_KeyFieldName;
FCondition:=' (1=1) ';
end;
procedure TBaseBrowser.FormCreate(Sender: TObject);
begin
FirstShow:=True;
ShowQryDlg:=False;
InitVars;
end;
procedure TBaseBrowser.SetCondition(const Value: string);
begin
FCondition := Value;
end;
procedure TBaseBrowser.SetTableName(const Value: string);
begin
FTableName := Value;
end;
procedure TBaseBrowser.FormShow(Sender: TObject);
begin
if FirstShow then
begin
GetList;
FirstShow:=False;
end;
if ShowQryDlg then
PostMessage(self.Handle, WM_SHOWQRYDLG, 0, 0);
InitDisplay;
end;
procedure TBaseBrowser.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TBaseBrowser.CellDblClick(Sender: TObject);
begin
actDetail.Execute ;
end;
procedure TBaseBrowser.UpdateKeyFieldValue;
begin
Pub_KeyFieldValue:='';
if not CheckDataSet(cdsMast) then exit;
if cdsMast.RecordCount =0 then exit;
if cdsMast.FindField(CS_KeyFieldName)=nil then exit;
Pub_KeyFieldValue:= cdsMast.FieldByName(CS_KeyFieldName).AsString ;
end;
procedure TBaseBrowser.InitDisplay;
begin
end;
function TBaseBrowser.GetID: string;
begin
Result:='';
if not CheckDataSet(cdsMast) then exit;
if cdsMast.RecordCount=0 then exit;
if cdsMast.FindField(CS_KeyFieldName)<>nil then
Result:=cdsMast.FindField(CS_KeyFieldName).AsString;
end;
procedure TBaseBrowser.WMShowQryDlg(var Message: TMessage);
begin
Query;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -