📄 sjcustombrowsefrm.pas
字号:
unit SJCustomBrowseFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SJCustomFrm, PropStorageEh, Grids, DBGridEh, SJCustomProperty, DB,
XPMenu, Menus, ActnList, DBGridEhImpExp, wwDialog, wwfltdlg, ImgList, Printers,
RM_FormReport, RM_Desgn;
type
TSJCustomBrowseForm = class(TSJCustomForm)
grdBrowse: TDBGridEh;
pmBrowse: TPopupMenu;
XPMenu1: TXPMenu;
ActList: TActionList;
actBrowseSaveAs: TAction;
actBrowseCut: TAction;
actBrowseCopy: TAction;
actBrowsePaste: TAction;
actBrowseSelectAll: TAction;
actBrowseNew: TAction;
actBrowseEdit: TAction;
actBrowseDelete: TAction;
actBrowseFind: TAction;
actBrowseRefresh: TAction;
S1: TMenuItem;
N1: TMenuItem;
X1: TMenuItem;
C1: TMenuItem;
P1: TMenuItem;
N2: TMenuItem;
A1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
E1: TMenuItem;
D1: TMenuItem;
N5: TMenuItem;
F1: TMenuItem;
R1: TMenuItem;
Savedlg: TSaveDialog;
FilterDialog: TwwFilterDialog;
actBrowsePreview: TAction;
actBrowsePrintSetup: TAction;
actBrowsePrint: TAction;
Images: TImageList;
RMDesigner: TRMDesigner;
FormReport: TRMFormReport;
procedure ActListUpdate(Action: TBasicAction; var Handled: Boolean);
procedure actBrowseSaveAsExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure actBrowsePreviewExecute(Sender: TObject);
procedure actBrowsePrintSetupExecute(Sender: TObject);
procedure actBrowsePrintExecute(Sender: TObject);
private
FFileName: string;
protected
FPropertyForm: TSJCustomPropertyForm;
procedure Cut; virtual;
procedure Copy; virtual;
procedure Paste; virtual;
procedure SelectAll; virtual;
procedure New; virtual;
procedure Edit; virtual;
procedure Delete; virtual;
procedure SaveToFile(const Afilename: string); virtual;
procedure Search; virtual;
procedure Refresh; virtual;
function GetPropertyForm: TSJCustomPropertyForm; virtual;
public
property PropertyForm: TSJCustomPropertyForm read GetPropertyForm;
end;
var
SJCustomBrowseForm: TSJCustomBrowseForm;
implementation
uses InvPrintDM;
{$R *.dfm}
{ TSJCustomBrowseForm }
procedure TSJCustomBrowseForm.Copy;
begin
with grdBrowse do
if CheckCopyAction and (geaCopyEh in EditActions) then
DBGridEh_DoCopyAction(grdBrowse, False);
end;
procedure TSJCustomBrowseForm.Cut;
begin
with grdBrowse do
if CheckCutAction and (geaCutEh in EditActions) then
DBGridEh_DoCutAction(grdBrowse, False);
end;
procedure TSJCustomBrowseForm.Delete;
// 删除客户用水记录
var
I: Integer;
begin
if Application.MessageBox(Pchar('你真的要删除所选定的数据吗?'), Pchar('提示'), MB_YESNO) = IDNO then
Exit;
Screen.Cursor := crHourGlass;
with grdBrowse, grdBrowse.DataSource.DataSet do
try
DisableControls;
for I := 0 to SelectedRows.Count - 1 do
try
GotoBookmark(Pointer(SelectedRows.Items[I]));
if not Bof or not Eof then // 如果已经删除完毕则不进行相关操作
Delete;
except
on Exception do
ShowMessage('删除当前记录失败,可能此记录已经被其它表引用不能删除 。');
end;
finally
EnableControls;
Screen.Cursor := crDefault;
end;
end;
function TSJCustomBrowseForm.GetPropertyForm: TSJCustomPropertyForm;
begin
//
end;
procedure TSJCustomBrowseForm.Paste;
begin
with grdBrowse do
if CheckPasteAction and (geaPasteEh in EditActions) then
DBGridEh_DoPasteAction(grdBrowse, False);
end;
procedure TSJCustomBrowseForm.SaveToFile(const Afilename: string);
var
ExpClass: TDBGridEhExportClass;
Ext, Astr: string;
begin
Savedlg.FileName := Afilename;
if Savedlg.Execute then
begin
case Savedlg.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
Astr := Savedlg.FileName;
if UpperCase(System.Copy(Astr, Length(Astr)-2, 3)) <> UpperCase(Ext) then
Savedlg.FileName := Savedlg.FileName + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass, grdBrowse, Savedlg.FileName,False);
end;
end;
end;
procedure TSJCustomBrowseForm.SelectAll;
begin
with grdBrowse do
if CheckSelectAllAction and (geaSelectAllEh in EditActions) then
Selection.SelectAll;
end;
procedure TSJCustomBrowseForm.ActListUpdate(Action: TBasicAction;
var Handled: Boolean);
begin
inherited;
with grdBrowse do
begin
actBrowseCut.Enabled := CheckCutAction and (geaCutEh in EditActions);
actBrowseCopy.Enabled := CheckCopyAction and (geaCopyEh in EditActions);
actBrowsePaste.Enabled := CheckPasteAction and (geaPasteEh in EditActions);
actBrowseDelete.Enabled := CheckDeleteAction and (geaDeleteEh in EditActions);
actBrowseSelectAll.Enabled := CheckSelectAllAction and (geaSelectAllEh in EditActions);
actBrowseSaveAs.Enabled := CheckCopyAction and (geaCopyEh in EditActions);
end;
end;
procedure TSJCustomBrowseForm.Search;
// 查找数据
begin
if grdBrowse.DataSource.DataSet.IsEmpty then
Exit;
try
FilterDialog.Caption := '查找';
FilterDialog.DefaultField := grdBrowse.DataSource.DataSet.Fields[0].Name;
FilterDialog.DefaultFilterBy := fdFilterByValue;
Screen.Cursor := crHourGlass;
FilterDialog.Execute;
Application.ProcessMessages;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TSJCustomBrowseForm.Refresh;
// 刷新当前数据集
var
Abookmark: TBookMark;
begin
with grdBrowse.DataSource.DataSet do
try
if not Active then
Exit;
Screen.Cursor := crHourGlass;
Abookmark := GetBookMark;
DisableControls;
Close;
try
Open;
GotoBookMark(Abookmark);
FreeBookMark(Abookmark);
except
ShowMessage('刷新数据失败,请重新打开数据表 。');
end;
finally
EnableControls;
Screen.Cursor := crDefault;
end;
end;
procedure TSJCustomBrowseForm.actBrowseSaveAsExecute(Sender: TObject);
var
ATAG: Integer;
begin
inherited;
ATAG := TAction(Sender).Tag;
case ATAG of
101 : SaveTofile(FFileName); // 另存文件
102 : Cut; // 剪切
103 : Copy; // 复制
104 : Paste; // 粘贴
105 : SelectAll; // 全部选择
106 : New; // 新建
107 : Edit; // 编辑
108 : Delete; // 删除
109 : Search; // 查找
110 : Refresh; // 刷新
end;
end;
procedure TSJCustomBrowseForm.Edit;
begin
if not grdBrowse.DataSource.DataSet.Active then
Exit;
if grdBrowse.DataSource.DataSet.IsEmpty then
begin
ShowMessage('当前数据集为空,不能进行编辑操作 。');
Exit;
end;
//with PropertyForm do
try
PropertyForm.NewRecord := False;
grdBrowse.DataSource.DataSet.Edit;
if PropertyForm.ShowModal = mrOK then
begin
try
Screen.Cursor := crHourGlass;
grdBrowse.DataSource.DataSet.Post;
except
ShowMessage('保存数据失败,请稍后再试 。');
end;
end else
grdBrowse.DataSource.DataSet.Cancel;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TSJCustomBrowseForm.New;
begin
if not grdBrowse.DataSource.DataSet.Active then
Exit;
//with PropertyForm do
try
PropertyForm.NewRecord := True;
grdBrowse.DataSource.DataSet.Append;
if PropertyForm.ShowModal = mrOK then
begin
try
Screen.Cursor := crHourGlass;
grdBrowse.DataSource.DataSet.Post;
except
ShowMessage('保存数据失败,请稍后再试 。');
end;
end else
grdBrowse.DataSource.DataSet.Cancel;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TSJCustomBrowseForm.FormCreate(Sender: TObject);
begin
inherited;
if Assigned(grdBrowse.DataSource.DataSet) then
grdBrowse.DataSource.DataSet.Open;
end;
procedure TSJCustomBrowseForm.actBrowsePreviewExecute(Sender: TObject);
// 打印预览
begin
inherited;
FormReport.ReportTitle := self.Caption;
FormReport.PageLayout.pgSize := 9;
FormReport.PageLayout.pgOr := poLandscape;
FormReport.PrintControl := grdBrowse;
FormReport.ShowReport;
end;
procedure TSJCustomBrowseForm.actBrowsePrintSetupExecute(Sender: TObject);
// 打印设置
begin
inherited;
FormReport.ReportTitle := self.Caption;
FormReport.PageSetup;
end;
procedure TSJCustomBrowseForm.actBrowsePrintExecute(Sender: TObject);
// 打印
begin
inherited;
FormReport.ReportTitle := self.Caption;
FormReport.PageLayout.pgSize := 9;
FormReport.PageLayout.pgOr := poLandscape;
FormReport.PrintControl := grdBrowse;
FormReport.ShowPrintDialog := True;
FormReport.PrintReport;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -