📄 mymainform.pas
字号:
{**********************************************************************
界面显示定制及报表打印定制程序框架DEMO
代码名称: 界面显示定制及报表打印定制程序框架程序
编译工具: Delphi 6.0
功能: 实现了整个系统显示、打印定制的相关功能
作者: 邓普德
版权: 成都四方信息技术有限公司
使用限制:
SQL SERVER 数据库
最多可以在Listview列表中显示30列;
最多可以打印10列;
显示及打印列最多支持30个字符;
显示及打印列名称最多14个字符;
只能保存最近30天的本地日志文件;
建议打印备注信息不要超过5行,每行不要超过60个字符;
需要先安装QR362ProfD6.EXE打印转XLS控件。
适用于SQL SERVER数据库,且由于定制功能要使用数据库,因此数据库需要先打开。
定义时间: 2006-08-02
修改时间: 2006-08-06
**********************************************************************}
unit myMainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus, ExtCtrls,unCustomDisplay, QrPrntr,
Buttons,math,DateUtils, ImgList, ToolWin;
type
TmyMainForm1 = class(TForm)
MainMenu1: TMainMenu;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
ListViewPanel: TPanel;
PopupMenu1: TPopupMenu;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
StBar: TStatusBar;
CSListView: TListView;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
Memo1: TMemo;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
A1: TMenuItem;
N34: TMenuItem;
ToolBar1: TToolBar;
ToolButton6: TToolButton;
tbLogSys: TToolButton;
ToolButton5: TToolButton;
ToolButton20: TToolButton;
ToolButton22: TToolButton;
ToolButton3: TToolButton;
ToolButton7: TToolButton;
ToolButton9: TToolButton;
ToolButton1: TToolButton;
ToolButton8: TToolButton;
ToolButton13: TToolButton;
tbFind: TToolButton;
CloseSound: TToolButton;
ToolButton17: TToolButton;
ToolButton26: TToolButton;
Bevel1: TBevel;
CImageList: TImageList;
ImageList1: TImageList;
N1: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure CSListViewData(Sender: TObject; Item: TListItem);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure CSListViewColumnClick(Sender: TObject; Column: TListColumn);
procedure BitBtn6Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure CSListViewDblClick(Sender: TObject);
procedure CSListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure Memo1DblClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure N25Click(Sender: TObject);
private
DisplayClass:TCustomDisplay;//引入显示类
ShowDataBuffer : ^TShowDataBuffer;//定义显示缓冲区指针,其中的
FList: TList ;//定义显示列表
function LoadSelectToShowBuffer: boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
myMainForm1: TmyMainForm1;
HaveSort: Array [0..30] of Boolean;//定义LISTVIEW显示列排序数组
FIndex,FDataType,FColumnIndex : integer ;//定义当前排序列在数组中的索引、数据类型、列号
implementation
uses unCDM,unCDefine,unReportNamePrint, unreportDisplay, ColorSelect, unPersonReportDisplay,
unSetTableDetail, unfrmVer,UnMakeReportDetail;
{$R *.dfm}
//窗体创建
procedure TmyMainForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
//由于定制功能要使用数据库,因此数据库需要先打开
if not Assigned(CDM) then
CDM := TCDM.Create(nil);
If CDM.ConnectDataBase('KSDA','DENGPD','CSAP','CSAP')=False Then //其参数依次分别表示数据库名称,服务器名称,用户名和口令。
WriteLog(Memo1,'数据库连接失败');
CDM.GetShowColor;
FList := Tlist.Create;//创建FList列表
For i := 0 to 30 do haveSort[i] := true;//初始化排序数组
FColumnIndex:=0;
sUserID:='CSaP';//取得登录员工工号
DisplayClass := TCustomDisplay.Create();//创建显示类
DisplayClass.IniCustomDisplay(myMainForm1,CSListView,'','',
sUserID,ListViewPanel); ////调用显示类的IniCustomDisplay初始化窗体中的显示列表ListView
DisplayClass.nIconInArray:=2; //nIconInArray表示需要进行图标/片显示的数组中的序号,=0表示不显示图标
DisplayClass.nIconToBaseStateSeq:=0; //nIconBaseSeq是ImageList中从第几个图标开始的序号(从0开始计数)
DisplayClass.bShowStateColor:=True; //不同状态的指定列需要显示不同的颜色
DisplayClass.SetStateColor; //设置LISTVIEW行状态颜色,如果nIconInArray=0,或bShowStateColor=FALSE则该行可以不要,或设置了也不会有用
ShowColor(myMainForm1);//显示个性化自定义颜色方案
end;
procedure TmyMainForm1.N2Click(Sender: TObject);
begin
if not Assigned(frmReportNamePrint) then
frmReportNamePrint := TfrmReportNamePrint.Create(nil);
ShowColor(frmReportNamePrint);
frmReportNamePrint.Show;
end;
procedure TmyMainForm1.N3Click(Sender: TObject);
begin
if not Assigned(frmReportDisplay) then
frmReportDisplay := TfrmReportDisplay.Create(nil);
ShowColor(frmReportDisplay);
frmReportDisplay.Show;
end;
procedure TmyMainForm1.N4Click(Sender: TObject);
begin
if not Assigned(FrmSelectColor) then
FrmSelectColor := TFrmSelectColor.Create(nil);
ShowColor(myMainForm1);
FrmSelectColor.ShowModal;
FrmSelectColor.Free;
FrmSelectColor := nil;
ShowColor(myMainForm1);
end;
procedure TmyMainForm1.N6Click(Sender: TObject);
begin
if Not Assigned(frmPersonReportDisplay) then
frmPersonReportDisplay:=TfrmPersonReportDisplay.Create(nil);
frmPersonReportDisplay.IniShow('Demo');
ShowColor(frmPersonReportDisplay);
frmPersonReportDisplay.Execute ;
end;
procedure TmyMainForm1.N5Click(Sender: TObject);
begin
if not Assigned(frmTableDetail) then
frmTableDetail := TfrmTableDetail.Create(nil);
ShowColor(frmTableDetail);
frmTableDetail.Show;
end;
//将待显示数据保存到FList列表中,并调用函数进行显示
function TmyMainForm1.LoadSelectToShowBuffer: boolean;
var
i:Integer;
begin
Result := false;
If FList.Count>0 then//在载入数据前清空FLIST
ClearList(FList);
for i:=0 to 10002 do
begin
{
//数组列显示顺序参考
0 BID 人孔所在局ID
1 BNAME 人孔所在局ID(关联成局名称)
2 CODEID CODE ID
3 RTUNAME RTU 名称(关联成RTU名称)
4 LINEID 所在RTU路号
5 LOCKID 人孔锁编号
6 WELLID 人孔编号
7 WELLNAME 人孔名称
8 holeId 管孔编号
9 lidId 外盖编号
10 BoxId 交接箱编号
11 BoxAdd 交接箱地址
12 Trid 交接箱端子
13 c3 外盖状态历时
}
new(showDataBuffer);
if (i mod 10)=0 then
ShowDataBuffer[0] := '0'; //第一个值是专门为状态图标显示用的,用于保存状态序号
if (i mod 10)=1 then
ShowDataBuffer[0] := '1'; //第一个值是专门为状态图标显示用的,用于保存状态序号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -