📄 comjbzl.pas
字号:
bmJbzl: TBookMark;
iniFile: TIniFile;
begin
screen.Cursor := crHourGlass;
blnPreview := false;
aExit.ShortCut := 0;
iniFile := TiniFile.Create(ExtractFilePath(Application.ExeName) + 'System\DefRpt.ini');
ReportName := iniFile.ReadString(self.Name, 'Name', '');
iniFile.Free;
with dsJbzl do
begin
bmJbzl := GetBookmark;
DisableControls;
LoadPrintForm;
if rpt1 <> nil then
begin
rpt1.Print;
rpt1.Free;
rpt1 := nil;
end;
try
GotoBookmark(bmJbzl);
finally
FreeBookmark(bmJbzl);
EnableControls;
end;
end;
aExit.ShortCut := VK_ESCAPE;
screen.Cursor := crDefault;
end;
//aPrinterSetup.Execute
procedure TfrmComJbzl.aPrinterSetupExecute(Sender: TObject);
begin
frmMain.PrinterSetupDialog1.Execute;
end;
//aExit.Execute
procedure TfrmComJbzl.aExitExecute(Sender: TObject);
begin
Close;
end;
//aNew.Execute
procedure TfrmComJbzl.aNewExecute(Sender: TObject);
begin
if aNew.Hint = 'A' then
LoadEditForm('A')
else
LoadEditForm('I');
end;
//aModify.Execute
procedure TfrmComJbzl.aModifyExecute(Sender: TObject);
begin
if aModify.Enabled then
LoadEditForm('M');
end;
//aDel.Execute
procedure TfrmComJbzl.aDelExecute(Sender: TObject);
begin
if not dsJbzl.IsEmpty Then
if HaveDetail(dsJbzl, strDetailTables, strDetailWheres) Then
Application.MessageBox('已有明细资料,不能删除!', '资料删除', MB_OK + MB_ICONWARNING)
else if Application.MessageBox('确定要删除此项资料吗?',
'资料删除', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES then
begin
dsJbzl.Delete;
dsJbzl.ApplyUpdates(0);
SetButton;
end;
end;
//aTotal.Execute
procedure TfrmComJbzl.aTotalExecute(Sender: TObject);
var
evnTmp: TDataSetNotifyEvent;
bmJbzl: TBookMark;
strValues: string;
i: integer;
begin
if not (Screen.ActiveControl is TDBGrid) then exit;
evnTmp := nil;
if (strTotalFields = '') or (Copy(strTotalFields, Length(strTotalFields), 1) <> ';') then
strTotalFields := strTotalFields + ';';
strValues := '';
with TClientDataSet(TDBGrid(Screen.ActiveControl).DataSource.DataSet) do
begin
screen.Cursor := crHourGlass;
bmJbzl := GetBookmark;
DisableControls;
try
evnTmp := OnCalcFields;
//取消此事件再统计后,DBGrid中的计算字段就不能显示
//OnCalcFields := nil;
Last;
strValues := '总记录数 : ' + IntToStr(RecordCount);
for i := 0 to TDBGrid(Screen.ActiveControl).Columns.Count - 1 do
with TDBGrid(Screen.ActiveControl).Columns[i] do
if Visible and
(TDBGrid(Screen.ActiveControl).DataSource.DataSet.FindField(FieldName) <> nil) and
(Field.FieldKind = fkData) and
(Width > 0) and
(Field is TNumericField) and
(UpperCase(strTotalFields) <> 'EMPTY') and
((strTotalFields = ';') or (Pos(UpperCase(FieldName) + ';', UpperCase(strTotalFields)) > 0)) then
begin
strValues := strValues + #13#10#13#10 + Title.Caption + ' : ';
with Aggregates.Add do
begin
Expression := 'sum(' + FieldName + ')';
Active := true;
if Value = null then
strValues := strValues +
FormatFloat(TNumericField(Field).DisplayFormat, 0)
else
strValues := strValues +
FormatFloat(TNumericField(Field).DisplayFormat, Value);
end;
end;
Aggregates.Clear;
GotoBookmark(bmJbzl);
finally
FreeBookmark(bmJbzl);
EnableControls;
OnCalcFields := evnTmp;
screen.Cursor := crdefault;
end;
end;
Application.MessageBox(Pchar(strValues), '资料统计', MB_OK);
end;
//aRefresh.Execute
procedure TfrmComJbzl.aRefreshExecute(Sender: TObject);
begin
screen.Cursor := crHourGlass;
try
dsJbzl.Refresh;
finally
screen.Cursor := crDefault;
end;
end;
//aSearch.Execute
procedure TfrmComJbzl.aSearchExecute(Sender: TObject);
begin
frmFilter.dbgFt := DBGrid1;
if aSearch.Tag = 1 then
frmFilter.dsFt := dsJbzl;
frmFilter.ShowModal;
If frmFilter.strFt <> '' Then
begin
// TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name, frmFilter.strFt]));
TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), frmFilter.strFt]));
dsJbzl.Refresh;
dsJbzl.First;
SetButton;
end;
end;
//aAll.Execute
procedure TfrmComJbzl.aAllExecute(Sender: TObject);
begin
screen.Cursor := crHourGlass;
labSearch.Caption := '查询项目: .';
// 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), '']));
dsJbzl.Refresh;
SetButton;
screen.Cursor := crDefault;
end;
//aSetColumn.Execute
procedure TfrmComJbzl.aSetColumnExecute(Sender: TObject);
begin
if not (Screen.ActiveControl is TDBGrid) then exit;
frmSetColumn.strFormName := self.Name;
frmSetColumn.dbgSC := TDBGrid(Screen.ActiveControl);
frmSetColumn.ShowModal;
end;
//aSetSort.Execute
procedure TfrmComJbzl.aSetSortExecute(Sender: TObject);
begin
if not (Screen.ActiveControl is TDBGrid) then exit;
frmSetSort.dbgSS := TDBGrid(Screen.ActiveControl);
frmSetSort.ShowModal;
end;
{*****自定义过程*****}
//LoadEditForm
procedure TfrmComJbzl.LoadEditForm(strState:string);
begin
frmEdit.strState := strState;
frmEdit.ShowModal;
frmEdit.Free;
SetButton;
end;
//LoadPrintForm
procedure TfrmComJbzl.LoadPrintForm;
begin
if frmSetPrint = nil then
frmSetPrint := TfrmSetPrint.Create(application);
with frmSetPrint do
begin
AForm := TfrmComJbzl(self);
AGrid := TDBGrid(Screen.ActiveControl);
ADataSet := TClientDataSet(TDBGrid(Screen.ActiveControl).DataSource.DataSet);
blnPreview := self.blnPreview;
ShowModal;
self.ReportName := ReportName;
Free;
end;
frmSetPrint := nil;
end;
//SetButton
procedure TfrmComJbzl.SetButton;
begin
aPrint.Enabled := aPrint.Tag = 0;
aPreview.Enabled := aPrint.Enabled;
aNew.Enabled := aNew.Tag = 0;
aModify.Enabled := (aModify.Tag = 0) and not (dsJbzl.IsEmpty);
aDel.Enabled := (aDel.Tag = 0) and not (dsJbzl.IsEmpty);
aTotal.Enabled := aTotal.Tag = 0;
end;
//OpenDataSet
procedure TfrmComJbzl.OpenDataSet;
var
SaveCursor: TCursor;
begin
SaveCursor := screen.Cursor;
screen.Cursor := crHourGlass;
dsJbzl.Close;
dsJbzl.Open;
strSql := dsJbzl.CommandText;
SetButton;
screen.Cursor := SaveCursor;
end;
//dsOnNewRecord
procedure TfrmComJbzl.dsOnNewRecord(DataSet: TDataSet);
begin
//
end;
//sDataChange
procedure TfrmComJbzl.sDataChange(Sender: TObject; Field: TField);
begin
//
end;
//SaveColumnQuery
procedure TfrmComJbzl.SaveColumnQuery;
var
i: integer;
strFileName: string;
strOld, strNew: string;
begin
if blnStopSetColumn then exit;
for i := 0 to self.ComponentCount - 1 do
if (self.Components[i] is TDBGrid) and (self.Components[i].Tag = 0) and
(UpperCase(pstrUserCode) <> 'SYS') then
begin
strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
FormatFloat('0000', pintUserID) +
self.Name + TDBGrid(self.Components[i]).Name;
TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.new');
strOld := self.GetColumnInfo(strFileName + '.cur');
strNew := self.GetColumnInfo(strFileName + '.new');
if strOld <> strNew then
if Application.MessageBox('是否保存对栏目布局的更改?',
'栏目布局', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON1) = IDYES then
TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.cur');
end;
end;
//GetColumnInfo
function TfrmComJbzl.GetColumnInfo(FileName: string): string;
var
strTmp, strTxt: string;
f: TextFile;
begin
if FileExists(FileName) then
begin
strTxt := '';
AssignFile(f, FileName);
Reset(f);
try
while not Eof(f) do
begin
Readln(f, strTmp);
strTxt := strTxt + strTmp;
end;
finally
CloseFile(f);
end;
result := strTxt;
end
else
result := '';
end;
procedure TfrmComJbzl.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Char(Key) in ['f', 'F']) then
aSearch.Execute;
if Screen.ActiveControl is TDBGrid then
begin
case Key of
VK_DELETE :
begin
Key := 0;
aDel.Execute;
end;
VK_LEFT :
begin
Key := 0;
TDBGrid(Screen.ActiveControl).Perform(WM_HSCROLL, 0, 0);
end;
VK_RIGHT :
begin
Key := 0;
TDBGrid(Screen.ActiveControl).Perform(WM_HSCROLL, 1, 0);
end;
end;
end;
end;
procedure TfrmComJbzl.dsAfterScroll(DataSet: TDataSet);
begin
//
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -