?? base_entry_head.pas
字號:
unit Base_Entry_Head;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Panel, ActnList, ExtCtrls, ComCtrls, ToolWin, AdOdb, Db, DBGridEH,
StdCtrls,Grids,Base_Condition,Base_Entry_Body,ExtPrintReport,pr_PrintReportType,
Sys_Condition,Sys_SortOrder, Sys_QuickLocate, Sys_SetColumn, Menus, Mask,
jpeg;
Type
TFrm_Base_Entry_Head = Class(TFrm_Base_Panel)
ToolButton1: TToolButton;
TlBtn_New: TToolButton;
TlBtn_Modify: TToolButton;
TlBtn_Delete: TToolButton;
ToolButton5: TToolButton;
TlBtn_Filter: TToolButton;
TlBtn_Order: TToolButton;
ToolButton9: TToolButton;
AdoQry_Head: TAdoQuery;
DataSource: TDataSource;
Lbl_OrderTitle: TLabel;
Lbl_ConditionTitle: TLabel;
Lbl_Condition: TLabel;
Lbl_Order: TLabel;
DBGridEh: TDBGridEh;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
TlBtn_Locate: TToolButton;
PopuPmenu: TPopuPmenu;
HideColumn: TMenuItem;
TlBtn_Look: TToolButton;
tlbtn_Copy: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ExtPrintReport: TExtPrintReport;
procedure Act_OrderExecute(Sender: TObject);
procedure Act_FilterExecute(Sender: TObject);
procedure Act_NewExecute(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Act_SetColumnExecute(Sender: TObject);
procedure Act_LocateExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Act_DeleteExecute(Sender: TObject);
procedure HideColumnClick(Sender: TObject);
procedure Act_LookExecute(Sender: TObject);
procedure DBGridEhDblClick(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
procedure Act_ExcelExecute(Sender: TObject);
private
procedure SetReport;//報表打印參數設置
procedure GetTransValue(FieldName,OldValue:String;var NewValue:String);//打印轉換過程
{ Private declarations }
protected
{ protected declarations }
SelectFromSQL:String;//存放類似select...from...的SQL語句
Condition:String;//存放 Where 后的條件
ConditionUserDefine:String;//存放 Where 后的條件
OrderByFields:String;//當前排序字段信息 認大小寫
Frm_Sys_Condition:TFrm_Base_Condition;//用于引用條件窗體;
Frm_Entry_Body:TFrm_Base_Entry_Body;//用于引用彈出窗體;
Frm_Sys_SortOrder:TFrm_Sys_SortOrder;//用于引用排序條件窗體;
Frm_Sys_QuickLocate:TFrm_Sys_QuickLocate;//用于引用快速定位設置窗體;
Frm_Sys_SetColumn:TFrm_Sys_SetColumn;//用于引用設置DBGridEh顯示列窗體;
procedure GetData; virtual;//由于SQL的改變,用此過程重新SQL一下
function SetDeleteSql:String;virtual;
procedure InitReport; virtual;//設置報表表頭屬性
//子類重載,設置打印數據的轉換過程
procedure SetColumnsStyle(ItemIndex:Integer;FieldName:String); virtual;
public
{ Public declarations }
//初始化Form過程,子類一般都要重載
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);virtual;
end;
TAdoQueryExpress=Class(TAdoQuery)
Public
Property CommandTimeOut;
end;
var
Frm_Base_Entry_Head: TFrm_Base_Entry_Head;
implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Base_Entry_Head.SetColumnsStyle(ItemIndex:Integer;FieldName:String);
begin
end;
procedure TFrm_Base_Entry_Head.InitReport;
begin//定義表頭
inherited;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select SysParamValueC'
+' From SysParam'
+' Where SysParamCode=''Name0''';
AdoQry_Tmp.Open;
ExtPrintReport.Title1:=AdoQry_Tmp.fieldbyname('SysParamValueC').AsString;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select ReportName1,ISOCode1'
+' From ReportCtrl'
+' Where SysMenuId='+MenuId;
AdoQry_Tmp.Open;
ExtPrintReport.Title2:=AdoQry_Tmp.fieldbyname('ReportName1').AsString;
ExtPrintReport.SubTitle1:=AdoQry_Tmp.fieldbyname('ISOCode1').AsString;
ExtPrintReport.Subtitle2:=Lbl_Condition.Caption;
end;
procedure TFrm_Base_Entry_Head.GetTransValue(FieldName,OldValue:String;var NewValue:String);
var
i:integer;
begin
NewValue:=OldValue;
if DBGridEh<>nil then
for i:=0 to DBGridEh.Columns.Count-1 do
if(DBGridEh.Columns[i].FieldName=FieldName)then
begin
if(DBGridEh.Columns[i].Field.DataType in [ftFloat])
and(TFloatField(DBGridEh.Columns[i].Field).DisplayFormat<>'')
and(OldValue<>'')then
begin//處理 定義了打印格式的字段
NewValue:=FormatFloat(TFloatField(DBGridEh.Columns[i].Field).DisplayFormat,StrToFloat(OldValue));
end
else if DBGridEh.Columns[i].KeyList.IndexOf(OldValue)<>-1 then
begin//處理 pickList 與keyList
NewValue:=DBGridEh.Columns[i].PickList.Strings[DBGridEh.Columns[i].
KeyList.IndexOf(OldValue)];
end;
break;
end;
end;
procedure TFrm_Base_Entry_Head.SetReport;
var
i,j,k:integer;
GroupCaption,ColumnTitle:String;
begin
if DBGridEh.DataSource.DataSet.Active=False then
Abort;
GroupCaption:='';
ExtPrintReport.DataSet:=nil;
ExtPrintReport.Headers.clear;
i:=0;
k:=-1;
with ExtPrintReport do
begin
for j:=0 to DBGridEH.Columns.Count-1 do
if DBGridEH.Columns[j].Visible then
begin//只打印可視的數據
Headers.Add;
ColumnTitle:=DBGridEH.Columns[j].Title.Caption;
Headers.Items[i].Caption :=Copy(ColumnTitle,Pos('|',ColumnTitle)+1,Length(ColumnTitle)-Pos('|',ColumnTitle));
Headers.Items[i].FieldName :=DBGridEH.Columns[j].FieldName;
Headers.Items[i].DisplayWidth:=DBGridEH.Columns[j].Width div (DBGridEH.Canvas.TextWidth(' '));
Headers.Items[i].Alignment :=DBGridEH.Columns[j].Alignment;
if((DBGridEh.Columns[j].PickList.Count>0)
and(DBGridEh.Columns[j].KeyList.Count>0))
or(DBGridEh.Columns[j].Field.DataType in [ftFloat])then
begin//定義了PickList或顯示格式的傳遞一個轉換過程
Headers.Items[i].Style:=dsTransForm;
Headers.Items[i].TransformFunction:=GetTransValue;
end
else//通知子類
SetColumnsStyle(i,DBGridEH.Columns[j].FieldName);
if (DBGridEH.UseMultiTitle)and(Pos('|',DBGridEH.Columns[j].Title.Caption)<>0) then
begin//多層表頭的處理
ColumnTitle:=Copy(DBGridEH.Columns[j].Title.Caption,1,Pos('|',DBGridEH.Columns[j].Title.Caption)-1);
if GroupCaption<>ColumnTitle then
begin
Inc(k);
GroupCaption:=ColumnTitle;
HeaderGroups.Add;
HeaderGroups.Items[k].Caption:=GroupCaption;
HeaderGroups.Items[k].StArtCol:=i+1;
HeaderGroups.Items[k].endCol:=i+1;
end
else
begin
HeaderGroups.Items[k].endCol:=i+1;
end;
end
else
GroupCaption:='';
Inc(i);
end;
DataSet:=DBGridEh.DataSource.DataSet;
InitReport;
end;
end;
procedure TFrm_Base_Entry_Head.Act_OrderExecute(Sender: TObject);
var
BookMArk:TBookMArk;
begin//排序字段設定處理過程
inherited;
if DBGridEh.DataSource.DataSet.Active=True then
begin
Frm_Sys_SortOrder.InitForm(DBGridEH,OrderByFields);
if(Frm_Sys_SortOrder.ShowModal=mrOk)then
begin
OrderByFields:=Frm_Sys_SortOrder.OrderFields;
Lbl_Order.Caption:=Frm_Sys_SortOrder.OrderCaption;
BookMArk:=AdoQry_Head.GetBookmArk;
AdoQry_Head.Sort:=OrderByFields;
AdoQry_Head.GotoBookmArk(BookMArk);
AdoQry_Head.FreeBookMArk(BookMArk);
end;
end;
end;
procedure TFrm_Base_Entry_Head.GetData;
begin//由于SQL的改變,用此過程重新SQL一下
if SelectFromSQL<>'' then
begin
AdoQry_Head.DisableControls;
AdoQry_Head.Close;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -