📄 comjbzl.pas
字号:
unit ComJbzl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, DBCtrls, ComCtrls, ToolWin, ImgList, Grids, DBGrids,
Clipbrd, StdCtrls ,db, QuickRpt,dbtables,dbclient,comedit, ActnList,
mconnect, Common, iniFiles, Variants;
type
TfrmComJbzl = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
Label1: TLabel;
Image2: TImage;
MainMenu1: TMainMenu;
smnFile: TMenuItem;
smnPreview: TMenuItem;
smnPrint: TMenuItem;
smnPrinterSetup: TMenuItem;
N1: TMenuItem;
smnExit: TMenuItem;
smnEdit: TMenuItem;
smnNew: TMenuItem;
smnModify: TMenuItem;
smnDel: TMenuItem;
smnRefresh: TMenuItem;
N2: TMenuItem;
smnSearch: TMenuItem;
smnAll: TMenuItem;
PopupMenu1: TPopupMenu;
pmnNew: TMenuItem;
pmnModify: TMenuItem;
pmnDel: TMenuItem;
pmnRefresh: TMenuItem;
smnTotal: TMenuItem;
pmnTotal: TMenuItem;
Image1: TImage;
ActionList1: TActionList;
aPreview: TAction;
aPrint: TAction;
aNew: TAction;
aModify: TAction;
aDel: TAction;
aTotal: TAction;
aRefresh: TAction;
aSearch: TAction;
aAll: TAction;
aPrinterSetup: TAction;
aExit: TAction;
aSetColumn: TAction;
N9: TMenuItem;
mnuSetColumn: TMenuItem;
aSetSort: TAction;
mnuSetSort: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
pmnSetColumn: TMenuItem;
pmnSetSort: TMenuItem;
pmnSearch: TMenuItem;
pmnAll: TMenuItem;
labSort: TLabel;
ControlBar1: TControlBar;
ToolBar2: TToolBar;
DBNavigator1: TDBNavigator;
ToolBar1: TToolBar;
btnPreview: TToolButton;
btnPrint: TToolButton;
ToolButton3: TToolButton;
btnNew: TToolButton;
btnModify: TToolButton;
btnDel: TToolButton;
ToolButton10: TToolButton;
btnTotal: TToolButton;
btnSearch: TToolButton;
btnAll: TToolButton;
labSearch: TLabel;
ToolBar3: TToolBar;
ToolButton15: TToolButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);virtual;
procedure SetButton;virtual;
procedure LoadEditForm(strState:string);virtual;
procedure LoadPrintForm;virtual;
procedure FormCreate(Sender: TObject);virtual;
procedure dsOnNewRecord(DataSet: TDataSet);virtual;
procedure dsAfterScroll(DataSet: TDataSet);virtual;
procedure sDataChange(Sender: TObject; Field: TField);virtual;
procedure OpenDataSet;virtual;
procedure FormShow(Sender: TObject);virtual;
procedure aPreviewExecute(Sender: TObject);virtual;
procedure aPrintExecute(Sender: TObject);virtual;
procedure aPrinterSetupExecute(Sender: TObject);virtual;
procedure aExitExecute(Sender: TObject);virtual;
procedure aNewExecute(Sender: TObject);virtual;
procedure aModifyExecute(Sender: TObject);virtual;
procedure aDelExecute(Sender: TObject);virtual;
procedure aTotalExecute(Sender: TObject);virtual;
procedure aRefreshExecute(Sender: TObject);virtual;
procedure aSearchExecute(Sender: TObject);virtual;
procedure aAllExecute(Sender: TObject);virtual;
procedure FormActivate(Sender: TObject);virtual;
procedure aSetColumnExecute(Sender: TObject);virtual;
procedure aSetSortExecute(Sender: TObject);virtual;
procedure FormResize(Sender: TObject);virtual;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);virtual;
private
{ Private declarations }
blnPreview: boolean;
cdsEve :cdsEventsArray;
procedure SaveColumnQuery;
function GetColumnInfo(FileName: string): string;
public
{ Public declarations }
dsJbzl: Tclientdataset;
rpt1: TQuickRep;
ReportName: string;
blnMyRpt: boolean;
blnStopSetColumn: boolean;
frmEdit: TfrmComEdit;
strAutoScale: string;
strSql: string;
strTotalFields: string;
strDetailTables: string;
strDetailWheres: string;
end;
var
frmComJbzl: TfrmComJbzl;
implementation
uses
Main, Filter, Dm, SetColumn, SetSort, SetPrint;
{$R *.DFM}
//Form.Create
procedure TfrmComJbzl.FormCreate(Sender: TObject);
begin
screen.Cursor := crHourGlass;
end;
//Form.Show
procedure TfrmComJbzl.FormShow(Sender: TObject);
var
i, j: integer;
intWid: integer;
tb: TToolButton;
strFileName: string;
c: TComponent;
begin
//Log
with Data.Tmp do
begin
Close;
CommandText := 'insert into AppLog (uName, cName, CZ, RQ, SJ) ' +
'values (''' + pstrUserName + ''', ' +
'''' + pstrComputerName + ''', ' +
'''' + self.Caption + ''', ' +
'''' + FormatDateTime('yyyy-mm-dd', Date) + ''', ' +
'''' + FormatDateTime('hh:nn', Time) + ''')';
Execute;
end;
//Add ToolButton
tb := TToolButton.Create(self);
tb.Caption := self.Caption;
tb.Hint := self.Name;
tb.OnClick := frmMain.ToolButtonClick;
tb.Parent := frmMain.tlbAForm;
//Popedom
if UpperCase(pstrUserCode) <> 'SYS' then
with Data.Tmpl do
begin
Close;
CommandText := 'select * from AppGroupAction ' +
'where gName = ''' + pstrUserGroup + ''' and ' +
'fName = ''' + self.Name + '''';
Open;
while not Eof do
begin
c := self.FindComponent(FieldByName('aName').AsString);
if c <> nil then
begin
c.Tag := 1;
if c is TCustomAction then
TCustomAction(c).Enabled := false;
if c is TControl then
TControl(c).Enabled := false;
end;
Next;
end;
end;
//DBGrid
for i := 0 to self.ComponentCount - 1 do
if (self.Components[i] is TDBGrid) then
begin
//Width
with TDBGrid(self.Components[i]) do
begin
intWid := 0;
for j := 0 to Columns.Count - 1 do
begin
Columns[j].Title.Alignment := taCenter;
if Columns[j].Visible then
intWid := intWid + Columns[j].Width;
end;
if intWid < Screen.Width Div 2 then
for j := 0 to Columns.Count - 1 do
Columns[j].Width := Trunc(Columns[j].Width * 1.5);
//Auto Scale
if (Pos(UpperCase(Name), UpperCase(strAutoScale)) > 0) then
for j := 0 to Columns.Count - 1 do
Columns[j].Width := Round(Columns[j].Width * (790 - GetSystemMetrics(SM_CXVSCROLL)) / intWid) - 1;
end;
//Save DBGrid1.Columns
strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
FormatFloat('0000', pintUserID) +
self.Name + TDBGrid(self.Components[i]).Name;
TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.int');
if not blnStopSetColumn and (self.Components[i].Tag = 0) and
(UpperCase(pstrUserCode) <> 'SYS') then
begin
//Set DBGrid1.Columns
if FileExists(strFileName + '.cur') then
begin
strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
FormatFloat('0000', pintUserID) +
self.Name + TDBGrid(self.Components[i]).Name;
TDBGrid(self.Components[i]).Columns.LoadFromFile(strFileName + '.cur');
end
else
CopyFile(PChar(strFileName + '.int'), PChar(strFileName + '.cur'), True);
end;
end;
//
Label1.Caption := self.Caption;
dsJbzl := TClientDataSet(DBGrid1.DataSource.DataSet);
cdsEve := SaveCDSEvents(dsJbzl);
dsJbzl.OnNewRecord := dsOnNewRecord;
dsJbzl.AfterScroll := dsAfterScroll;
DBGrid1.DataSource.OnDataChange := sDataChange;
DBNavigator1.DataSource := DBGrid1.DataSource;
// TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name,'']));
TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), '']));
OpenDataSet;
//Set Sort
with CurDs do
begin
Close;
CommandText := 'select * from AppSort ' +
'where uID = ' + IntToStr(pintUserId) + ' and ' +
'FormCaption = ''' + self.Name + DBGrid1.Name + '''';
Open;
if not IsEmpty then
begin
labSort.Caption := '排序方式: ' + FieldByName('iCaption').AsString;
frmSetSort.AddIndexDef(TClientDataSet(DBGrid1.DataSource.DataSet),
FieldByName('iFields').AsString,
FieldByName('iDescFields').AsString);
end
else
begin
labSort.Caption := '排序方式: .';
// frmSetSort.AddIndexDef(TClientDataSet(DBGrid1.DataSource.DataSet), '', '')
end;
end;
screen.Cursor := crDefault;
end;
procedure TfrmComJbzl.FormActivate(Sender: TObject);
var
i: integer;
begin
ControlBar1.Visible := frmMain.mnuToolBar.Checked;
for i := 0 to frmMain.tlbAForm.ButtonCount - 1 do
if frmMain.tlbAForm.Buttons[i].Hint <> self.Name then
frmMain.tlbAForm.Buttons[i].ImageIndex := 0
else
frmMain.tlbAForm.Buttons[i].ImageIndex := 1;
//dsJbzl.CommandText
if dsJbzl.CommandText <> strSql then
OpenDataSet
else
dsJbzl.Refresh;
end;
//Form.Close
procedure TfrmComJbzl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveColumnQuery;
RestoreCDSEvents(dsJbzl, cdsEve);
DBGrid1.DataSource.OnDataChange := nil;
dsJbzl.Close;
// TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name,'']));
TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), '']));
Action := caFree;
end;
//Form.Resize
procedure TfrmComJbzl.FormResize(Sender: TObject);
begin
ToolBar2.Left := ControlBar1.Left + ControlBar1.Width - ToolBar2.Width - ToolBar3.Width;
ToolBar3.Left := ControlBar1.Left + ControlBar1.Width - ToolBar3.Width;
end;
//aPreview.Execute
procedure TfrmComJbzl.aPreviewExecute(Sender: TObject);
var
bmJbzl: TBookMark;
begin
screen.Cursor := crHourGlass;
blnPreview := true;
aExit.ShortCut := 0;
ReportName := '';
with dsJbzl do
begin
bmJbzl := GetBookmark;
DisableControls;
LoadPrintForm;
if rpt1 <> nil then
begin
rpt1.Preview;
rpt1.Free;
rpt1 := nil;
end;
try
GotoBookmark(bmJbzl);
finally
FreeBookmark(bmJbzl);
EnableControls;
end;
end;
aExit.ShortCut := VK_ESCAPE;
screen.Cursor := crDefault;
end;
//aPrint.Execute
procedure TfrmComJbzl.aPrintExecute(Sender: TObject);
var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -