wsbrowse.pas
来自「企业ERP管理系统」· PAS 代码 · 共 592 行 · 第 1/2 页
PAS
592 行
FilterDialog.FilterFields := GetFilterFields;
FFilterDialogList.Add(FilterDialog);
end
else begin
NewFilterDialog := TQLDBFilterDialog.Create(Self);
NewFilterDialog.FilterStrings.Assign(FilterDialog.FilterStrings);
// FilterDialog.DataSet := ADataSet;
FilterDialog := NewFilterDialog;
FilterDialog.FilterFields := GetFilterFields;
FFilterDialogList.Add(FilterDialog);
end;
FilterDataSet := TDataSetClass(ADataSet.ClassType).Create(Self);
FilterDataSet.Tag := GetNextTag;
FilterDataSet.Name := 'FilterDataSet' + IntToStr(FilterDataSet.Tag);
if FilterDataSet is TCustomADODataSet then
begin
TCustomADODataSet(FilterDataSet).Connection := TCustomADODataSet(ADataSet).Connection;
if FilterDataSet is TADODataSet then
begin
TADODataSet(FilterDataSet).CommandText := TADODataSet(ADataSet).CommandText;
TADODataSet(FilterDataSet).Parameters.Assign(TADODataSet(ADataSet).Parameters);
end
else if FilterDataSet is TADOQuery then
begin
TADOQuery(FilterDataSet).SQL.Assign(TADOQuery(ADataSet).SQL);
TADOQuery(FilterDataSet).Parameters.Assign(TADOQuery(ADataSet).Parameters);
end
else if FilterDataSet is TADOTable then
TADOTable(FilterDataSet).TableName := TADOTable(ADataSet).TableName
else if FilterDataSet is TADOStoredProc then
TADOStoredProc(FilterDataSet).ProcedureName := TADOStoredProc(ADataSet).ProcedureName;
end;
FilterDataSet.Open;
for I := 0 to FilterDataSet.FieldCount - 1 do
begin
with FilterDataSet.Fields[I] do
begin
Field := ADataSet.FindField(FieldName);
Visible := (Field <> nil) and Field.Visible;
if Field <> nil then
begin
DisplayLabel := ADataSet.FieldByName(FieldName).DisplayLabel;
if IsPublishedProp(FilterDataSet.Fields[I], 'currency') and
(GetOrdProp(ADataSet.FieldByName(FieldName), 'currency') <> 0) then
SetOrdProp(FilterDataSet.Fields[I], 'currency', 1);
if IsPublishedProp(FilterDataSet.Fields[I], 'DisplayFormat') then
SetStrProp(FilterDataSet.Fields[I], 'DisplayFormat',
GetStrProp(ADataSet.FieldByName(FieldName), 'DisplayFormat'));
end;
end;
end;
FilterDialog.DataSet := FilterDataSet;
Result := FilterDialog.Execute;
if Result then
begin
with TTabSheet.Create(Self) do
begin
PageControl := Self.PageControl;
Tag := FilterDataSet.Tag;
Caption := '查询 ' + IntToStr(Tag);
S := Caption;
if InputQuery('查询', '查询结果名称:', S) then
Caption := S;
end;
PageControl.ActivePageIndex := PageControl.PageCount - 1;
PageControl.OnChange(PageControl);
end
else begin
FilterDialog.DataSet := nil;
FilterDataSet.Free;
end;
hint :=s;
end;
procedure TWSBrowseForm.ExportActionExecute(Sender: TObject);
begin
{ DONE -cUI : 添加导出 DBGrid 的内容的代码}
ExportDBGridToExcel(DBGrid, GetKeyState(VK_SHIFT) and $80000 = $80000,
Caption, Hint, DBGrid.Hint);
end;
procedure TWSBrowseForm.FiltrateActionExecute(Sender: TObject);
begin
ExecuteFilterDialog(DataSet);
end;
procedure TWSBrowseForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if FormStyle = fsMDIChild then Action := caFree;
end;
procedure TWSBrowseForm.FormCreate(Sender: TObject);
begin
FAllowSort := True;
FFilterDialogList := TList.Create;
end;
procedure TWSBrowseForm.FormDestroy(Sender: TObject);
begin
FFilterDialogList.Free;
end;
function TWSBrowseForm.GetDataSet: TDataSet;
begin
Result := DataSource.DataSet;
end;
procedure TWSBrowseForm.InitReport(Report: TQuickRep);
begin
end;
procedure TWSBrowseForm.Print(Preview: Boolean = False; ShowSetupDialog: Boolean = False);
begin
with CreateQRBuilder do
try
Active := True;
InitReport(TQuickRep(Report));
if Preview then Report.PreviewModal
else begin
if ShowSetupDialog then Report.PrinterSetup;
Report.Print;
end;
finally
Free;
end;
end;
procedure TWSBrowseForm.PrintActionExecute(Sender: TObject);
begin
Print(False, False);
end;
procedure TWSBrowseForm.PrintPreviewActionExecute(Sender: TObject);
begin
Print(True);
end;
procedure TWSBrowseForm.RefreshDataSet;
begin
WSUtils.RefreshDataSet(DataSet);
end;
procedure TWSBrowseForm.TabSheetShow(Sender: TObject);
var
I, DSTag: Integer;
TabSheet: TTabSheet;
begin
TabSheet := PageControl.ActivePage;
if TabSheet <> nil then
begin
DSTag := TabSheet.Tag;
for I := 0 to ComponentCount - 1 do
if (Components[I].Tag = DSTag) and (Components[I] is TDataSet) then
begin
if not TDataSet(Components[I]).Active then
begin
TDataSet(Components[I]).Open;
RefreshAvailableFields;
end;
DataSource.DataSet := TDataSet(Components[I]);
Break;
end;
end;
end;
procedure TWSBrowseForm.FormShow(Sender: TObject);
begin
PageControl.OnChange(PageControl);
end;
procedure TWSBrowseForm.RefreshActionExecute(Sender: TObject);
begin
RefreshDataSet;
end;
function TWSBrowseForm.CreateEditForm: TWSEditForm;
begin
raise Exception.Create('No edit form');
end;
procedure TWSBrowseForm.AddNewActionExecute(Sender: TObject);
begin
with CreateEditForm do
try
if Enter then RefreshDataSet;
finally
Free;
end;
end;
procedure TWSBrowseForm.EditActionExecute(Sender: TObject);
begin
with CreateEditForm do
try
if Edit(GetEditParams) then RefreshDataSet;
finally
Free;
end;
end;
function TWSBrowseForm.GetEditParams: Variant;
begin
if DataSet.FindField('ID')<> nil then
Result := DataSet.fieldbyname('ID').Value
else Result := DataSet.Fields[0].Value;
end;
procedure TWSBrowseForm.ExitActionExecute(Sender: TObject);
begin
Close;
end;
procedure TWSBrowseForm.DBGridDblClick(Sender: TObject);
begin
inherited;
EditAction.Execute;
end;
function TWSBrowseForm.GetNextTag: Integer;
var
I: Integer;
begin
Result := 0;
for I := 0 to PageControl.PageCount - 1 do
if PageControl.Pages[I].Tag >= Result then Result := PageControl.Pages[I].Tag + 1;
end;
procedure TWSBrowseForm.wsbrowsepopnRenameClick(Sender: TObject);
var s :string;
begin
inherited;
if PageControl.ActivePageIndex =0 then exit;
InputQuery(PageControl.ActivePage.Caption, PageControl.ActivePage.Caption+' 改为: ', S);
if s<>'' then PageControl.ActivePage.Caption :=s;
end;
procedure TWSBrowseForm.wsbrowsepopDeleteClick(Sender: TObject);
begin
inherited;
if PageControl.ActivePageIndex =0 then exit;
// FilterDataSet.Tag := PageControl.ActivePageIndex;
// FilterDataSet.Destroy;
PageControl.ActivePage.Visible :=False;
end;
procedure TWSBrowseForm.DBGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if ([ssCtrl] = Shift) and (Key = Ord('C')) and (DBGrid.SelectedField <> nil) then
Clipboard.AsText := DBGrid.SelectedField.DisplayText;
end;
procedure TWSBrowseForm.CustomizeViewActionExecute(Sender: TObject);
var
I: Integer;
begin
inherited;
if FAvailableFields = '' then RefreshAvailableFields;
with TQLDBCustomViewDialog.Create(Self) do
try
DataSet := Self.DataSet;
AvailableFields := FAvailableFields;
if Execute then
for I := 0 to DBGrid.Columns.Count - 1 do
if DBGrid.Columns[I].Field <> nil then
DBGrid.Columns[I].Visible := DBGrid.Columns[I].Field.Visible;
finally
Free;
end;
end;
procedure TWSBrowseForm.RefreshAvailableFields;
var
I: Integer;
begin
FAvailableFields := '';
if DataSet <> nil then
with DataSet do
for I := 0 to FieldCount - 1 do
if Fields[I].Visible then
FAvailableFields := FAvailableFields + Fields[I].FieldName + ';';
end;
procedure TWSBrowseForm.ShowChartActionExecute(Sender: TObject);
begin
inherited;
ExportDBGridToExcel(DBGrid, GetKeyState(VK_SHIFT) and $80000 = $80000,
Caption, Hint, DBGrid.Hint, True);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?