📄 u_main.pas
字号:
unit U_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Grids, DBGrids,INIFiles, StdCtrls,ADODB, DB, Buttons, DBCtrls,
Mask, ComCtrls, Menus, ExtCtrls, ToolWin, ImgList,ShellAPI, DBClient;
type
TF_Main = class(TForm)
DBGrid_DB: TDBGrid;
Edit_Content: TEdit;
BitBtn_Jingque: TBitBtn;
BitBtn_Mohu: TBitBtn;
ComboBox_Condition: TComboBox;
BitBtn_Add: TBitBtn;
BitBtn_Delete: TBitBtn;
BitBtn_Edit: TBitBtn;
BitBtn_Cancle: TBitBtn;
BitBtn_Confirm: TBitBtn;
Label_Condition: TLabel;
Label_Content: TLabel;
TreeView_DB: TTreeView;
MainMenu_All: TMainMenu;
N_SysManger: TMenuItem;
ToolBar_DB: TToolBar;
SpeedButton_First: TSpeedButton;
SpeedButton_Prior: TSpeedButton;
SpeedButton_Next: TSpeedButton;
SpeedButton_Last: TSpeedButton;
N_DataBackup: TMenuItem;
N_DataRestore: TMenuItem;
SpeedButton_Leave: TSpeedButton;
N_Spilier: TMenuItem;
N_Close: TMenuItem;
N_Help: TMenuItem;
N_HelpInfo: TMenuItem;
N_HelpAbout: TMenuItem;
ImageList_DB: TImageList;
StatusBar_DB: TStatusBar;
Timer_DB: TTimer;
Label_TableName: TLabel;
SpeedButton_About: TSpeedButton;
N_DataManger: TMenuItem;
N_ToReport: TMenuItem;
N_ToExcel: TMenuItem;
SpeedButton_ToExcel: TSpeedButton;
SpeedButton_ToReport: TSpeedButton;
BitBtn_All: TBitBtn;
BitBtn_Chart: TBitBtn;
N_Online: TMenuItem;
N_Email: TMenuItem;
N_XML: TMenuItem;
ADOQry_XML: TADOQuery;
ClientDS: TClientDataSet;
ADOCnt_XML: TADOConnection;
SpeedButton_XML: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure BitBtn_JingqueClick(Sender: TObject);
procedure BitBtn_MohuClick(Sender: TObject);
procedure DBGrid_DBDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure BitBtn_AddClick(Sender: TObject);
procedure BitBtn_DeleteClick(Sender: TObject);
procedure BitBtn_EditClick(Sender: TObject);
procedure BitBtn_ConfirmClick(Sender: TObject);
procedure BitBtn_CancleClick(Sender: TObject);
procedure TreeView_DBClick(Sender: TObject);
procedure SpeedButton_PriorClick(Sender: TObject);
procedure SpeedButton_NextClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton_LeaveClick(Sender: TObject);
procedure SpeedButton_LastClick(Sender: TObject);
procedure SpeedButton_FirstClick(Sender: TObject);
procedure N_CloseClick(Sender: TObject);
procedure Timer_DBTimer(Sender: TObject);
procedure DBGrid_DBCellClick(Column: TColumn);
procedure N_HelpAboutClick(Sender: TObject);
procedure N_HelpInfoClick(Sender: TObject);
procedure N_DataBackupClick(Sender: TObject);
procedure N_DataRestoreClick(Sender: TObject);
procedure SpeedButton_AboutClick(Sender: TObject);
procedure N_ToReportClick(Sender: TObject);
procedure N_ToExcelClick(Sender: TObject);
procedure SpeedButton_ToExcelClick(Sender: TObject);
procedure SpeedButton_ToReportClick(Sender: TObject);
procedure BitBtn_AllClick(Sender: TObject);
procedure BitBtn_ChartClick(Sender: TObject);
procedure N_EmailClick(Sender: TObject);
procedure N_OnlineClick(Sender: TObject);
procedure N_XMLClick(Sender: TObject);
procedure SpeedButton_XMLClick(Sender: TObject);
private
procedure showhint(sender:tobject);
{ Private declarations }
public
{ Public declarations }
end;
var
F_Main: TF_Main;
implementation
Uses U_DBPublicPack,U_RecordStruct,U_Report,U_Logon,U_About,U_Backup,U_Restore,U_Chart;
{$R *.dfm}
procedure TF_Main.FormCreate(Sender: TObject);
//Var
// FWidth:integer;
begin
ShowTableDB;
DBTableName:=TreeView_DB.Items.Item[1].Text;
GetDBTableInfo(DBTableName);
RecordConut:=IntTostr(ADOQry.RecordCount);
Label_TableName.Caption:=TreeView_DB.Items.Item[1].Text+' 总共有 '+RecordConut+' 条记录';
DestroyDBEditAndDBText(DBGrid_DB);
CreateDBEditAndDBText(DBGrid_DB);
Application.OnHint:=ShowHint;
TreeView_DB.FullExpand;
StatusBar_DB.Panels[4].Text:='登陆时间:'+DateTimeToStr(Now);
{ if(Screen.width<> 800)then
begin
FWidth:=Width;
Scaled:=TRUE;
Font.Size:=(Width DIV FWidth)*Font.Size;//字体大小调整
ScaleBy(Screen.Width,800); //控件大小调整
Height:=longint(Height)*longint(Screen.Height)DIV 600;
Width:=longint(Width)*longint(Screen.Width)DIV 800;//窗口大小调整
end;
}
End;
//精确查询
procedure TF_Main.BitBtn_JingqueClick(Sender: TObject);
begin
If Edit_Content.Text='' Then
Begin
MessageDlg('请输入查值',MTConfirmation ,[MBOK],0);
End
Else
Begin
Jingque_Qry(DBTableName);
End;
End;
//模糊查询
procedure TF_Main.BitBtn_MohuClick(Sender: TObject);
begin
If Edit_Content.Text='' Then
Begin
MessageDlg('请输入查询值',MTConfirmation ,[MBOK],0);
End
Else
Begin
Mohu_Qry(DBTableName);
End;
End;
//所有记录
procedure TF_Main.BitBtn_AllClick(Sender: TObject);
begin
All_Qry(DBTableName);
end;
// DBGrid_DB 相应事件
procedure TF_Main.DBGrid_DBDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Var
i:Integer;
begin
For i:=0 To DBGrid_DB.FieldCount-1 Do
Begin
DBGrid_DB.Columns.Items[i].Alignment:=TaLeftJustify; //使筐中的内容左对齐
If (i Mod 2)=0 Then DBGrid_DB.Columns.Items[i].Color:=clMoneyGreen //使奇数列和偶数列的颜色不一样
Else DBGrid_DB.Columns.Items[i].Color:=ClTeal;
End;
if GdSelected in State then
DBGrid_DB.Canvas.Font.Color:=clAqua;
DBGrid_DB.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
// TreeView_DB 单击事件
procedure TF_Main.TreeView_DBClick(Sender: TObject);
Var
SelectStr:String; //定义选择的表名和总记录数
begin
SelectStr:=TreeView_DB.Selected.Text;
RecordConut:=IntTostr(ADOQry.RecordCount);
If (SelectStr='基本信息表') Or (SelectStr='客户表') Then
Begin
Exit;
End
Else
Begin
DestroyDBEditAndDBText(DBGrid_DB);
DBTableName:=TreeView_DB.Selected.Text;
GetDBTableInfo(DBTableName);
RecordConut:=IntTostr(ADOQry.RecordCount);
Label_TableName.Caption:=SelectStr+' 总共有 '+RecordConut+' 条记录';
CreateDBEditAndDBText(DBGrid_DB);//创建DBEdit,DBText
End;
end;
//增加记录
procedure TF_Main.BitBtn_AddClick(Sender: TObject);
begin
BitBtn_Cancle.Enabled:=True;
BitBtn_Confirm.Enabled:=True;
ADOQry.Append;
DBEdit[0].SetFocus;
end;
//删除记录
procedure TF_Main.BitBtn_DeleteClick(Sender: TObject);
begin
if Messagedlg('确定要删除这条记录吗?',MtWarning,MbOKCancel,0)=MrOk then
ADOQry.Delete;
BitBtn_Cancle.Enabled:=False;
BitBtn_Confirm.Enabled:=False;
end;
//修改记录
procedure TF_Main.BitBtn_EditClick(Sender: TObject);
begin
BitBtn_Cancle.Enabled:=True;
BitBtn_Confirm.Enabled:=True;
ADOQry.Edit;
DBEdit[0].SetFocus;
end;
//提交修改
procedure TF_Main.BitBtn_ConfirmClick(Sender: TObject);
Var
i:Integer;
begin
For i:=0 To 3 Do
Begin
If DBEdit[i].Text='' Then Begin ShowMessage(DBGrid_DB.Fields[i].FieldName+'不能为空,请重新输入');Exit;End;
End;
Try ADOQry.Post; Except Exit;End;
BitBtn_Confirm.Enabled:=False;
BitBtn_Cancle.Enabled:=False;
end;
//取消修改
procedure TF_Main.BitBtn_CancleClick(Sender: TObject);
begin
ADOQry.Cancel;
BitBtn_Confirm.Enabled:=False;
BitBtn_Cancle.Enabled:=False;
end;
//第一条一条记录
procedure TF_Main.SpeedButton_FirstClick(Sender: TObject);
begin
ADOQry.First;
end;
//前一条记录
procedure TF_Main.SpeedButton_PriorClick(Sender: TObject);
begin
ADOQry.Prior;
end;
//下一条一条记录
procedure TF_Main.SpeedButton_NextClick(Sender: TObject);
begin
ADOQry.Next;
end;
//最后一条记录
procedure TF_Main.SpeedButton_LastClick(Sender: TObject);
begin
ADOQry.Last;
end;
//退出菜单
procedure TF_Main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;
//退出菜单
procedure TF_Main.SpeedButton_LeaveClick(Sender: TObject);
begin
if Messagedlg('确定要退出吗?',MTConfirmation,[MBYes,MBNO],0)=MrYes then
Application.Terminate;
end;
//使 statusbar_DB.Panels[1].text 能跟随着 系统的 Hint 而动态的改变 Hint。
procedure TF_main.showhint(sender:tobject);
begin
StatusBar_DB.Panels[1].Text:=Application.Hint;
end;
//退出菜单
procedure TF_Main.N_CloseClick(Sender: TObject);
begin
Application.Terminate;
end;
//状态栏当前时间
procedure TF_Main.Timer_DBTimer(Sender: TObject);
begin
StatusBar_DB.Panels[5].Text:='当前时间:'+DateTimeToStr(Now);
end;
procedure TF_Main.DBGrid_DBCellClick(Column: TColumn);
Var
i:integer;
begin
With DBGrid_DB DO
Begin
If DBGrid_DB.FieldCount<1 Then Exit;
For i:=0 To FieldCount-1 Do
Begin
DBedit[i].Text:=Fields[i].AsString;
End;
End;
end;
procedure TF_Main.N_HelpInfoClick(Sender: TObject);
var
Txt:string;
begin
Txt:=ExtractFilePath(Paramstr(0))+'Help.html';
ShellExecute(Handle,'Open',Pchar(Txt),nil,nil,SW_Normal);
end;
//备份数据库
procedure TF_Main.N_DataBackupClick(Sender: TObject);
begin
// Application.CreateForm(TF_Backup,F_Backup);
F_Backup.Show;
end;
//还原数据库
procedure TF_Main.N_DataRestoreClick(Sender: TObject);
begin
// Application.CreateForm(TF_Restore,F_Restore);
F_Restore.Show;
end;
//关于 > > >
procedure TF_Main.N_HelpAboutClick(Sender: TObject);
begin
Application.CreateForm(TF_About,F_About);
// F_About.Show;
end;
procedure TF_Main.SpeedButton_AboutClick(Sender: TObject);
begin
N_HelpAbout.Click;
end;
//生成报表
procedure TF_Main.N_ToReportClick(Sender: TObject);
begin
If ADOQry.RecordCount=0 Then
Begin
ShowMessage('对不起,表中没有任何记录');
Exit;
End
Else
Begin
CreateQRLabelAndQRDBText(F_Main.DBGrid_DB);
F_Report.QuickRep_DB.Preview;
// F_Report.Show;
// F_Report.Free;
Application.CreateForm(TF_Report,F_Report);
// DestroyDBEditAndDBText(DBGrid_DB);
End;
end;
//导出到 Excel
procedure TF_Main.N_ToExcelClick(Sender: TObject);
begin
ToExcel(DBGrid_DB);
end;
procedure TF_Main.SpeedButton_ToExcelClick(Sender: TObject);
begin
N_ToExcel.Click;
end;
procedure TF_Main.SpeedButton_ToReportClick(Sender: TObject);
begin
N_ToReport.Click;
end;
//图表分析
procedure TF_Main.BitBtn_ChartClick(Sender: TObject);
begin
F_Chart.Show;
// F_Chart.DecisionGraph.:=; DS;
// ADOQry.DataSource:=F_Chart.DecisionGraph.DecisionSource;
end;
//给我写信
procedure TF_Main.N_EmailClick(Sender: TObject);
var
Url:string;
begin
Url:='Mailto:0809601@163.com';
ShellExecute(Handle,'Open',Pchar(Url),nil,nil,sw_normal);
end;
//在线帮助
procedure TF_Main.N_OnlineClick(Sender: TObject);
var
Url:string;
begin
Url:='http://endo.533.net/';
ShellExecute(Handle,'Open',Pchar(Url),nil,nil,sw_normal);
end;
procedure TF_Main.N_XMLClick(Sender: TObject);
Var
XMLName:String;
begin
{If TreeView_DB.Selected.Selected=True Then
XMLName:=TreeView_DB.Selected.Text
Else
XMLName:=DBTableName; }
If Connect_XML()=True Then
Begin
Try
With ADOQry_XML Do
Begin
// DBTableName:=TreeView_DB.Selected.Text;
XMLName:=DBTableName;//TreeView_DB.Selected.Text;
Close;SQL.Clear;SQL.Add('Select * From Logon');//+DBTableName);Open;
ADOQry_XML.Active:=True;
End;
ClientDS.SetProvider(ADOQry_XML);
// ClientDS
ClientDS.Active:=True;
ClientDS.SaveToFile('XML\'+DBTableName+'.XML'); //.FileName:=TreeView_DB.Selected.Text
ShowMessage('恭喜您!'+DBTableName+'导出数据成功');
Except
MessageDlg('对不起!导出失败',MTError,MbOKCancel,0);
End;
End;
ADOCnt_XML.Connected:=False;
ClientDS.Active:=False;
End;
procedure TF_Main.SpeedButton_XMLClick(Sender: TObject);
begin
N_XMLClick(Sender);
end;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -